Πίνακας περιεχομένων:
- Βήμα 1: Καλωδίωση
- Βήμα 2: Ομαλός θόρυβος
- Βήμα 3: Εφέ χρησιμοποιώντας ομαλό θόρυβο
- Βήμα 4: Τυχαία εφέ κλίσης
- Βήμα 5: Το τελικό αποτέλεσμα
Βίντεο: Arduino TFT Rainbow Noise Display: 5 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Δημιουργήσαμε αυτό το έργο ουράνιου τόξου χρησιμοποιώντας διάφορες τεχνικές «θορύβου», οι οποίες δημιουργούν ελεγχόμενα τυχαία εφέ. Προσθέτοντας λίγο χρώμα, θα μπορούσε να παραχθεί ένα εφέ ουράνιου τόξου. Χρησιμοποιεί Arduino Nano και οθόνη OLED 128x128. Εμφανίσαμε τα εφέ χρησιμοποιώντας τη βιβλιοθήκη TFT. Χρησιμοποιήσαμε επίσης διάφορα εξαρτήματα, όπως μια σανίδα ψωμιού και μερικά καλώδια.
Βήμα 1: Καλωδίωση
Το πιο βασικό έργο ήταν η καλωδίωση της OLED στο Arduino. Συνδέσαμε το GND και το VCC στα αντίστοιχα λεωφορεία της σανίδας ψωμιού. SCL στην ψηφιακή ακίδα 13; SDA στην ψηφιακή ακίδα 11; RES στην ψηφιακή ακίδα 8; DC σε ψηφιακό pin 9; CS σε ψηφιακό pin 10 και τέλος BL σε 3.3V στο Arduino. Χρησιμοποιώντας τις καρφίτσες 5v και GND από το Arduino, μπορέσαμε να τροφοδοτήσουμε ολόκληρο τον πίνακα ψωμιού.
Βήμα 2: Ομαλός θόρυβος
Μετά την προετοιμασία των απαιτήσεων για την οθόνη TFT. Για να δημιουργήσουμε το ομαλό φαινόμενο θορύβου, χρειαζόμασταν πρώτα μια βασική λειτουργία θορύβου. Αυτό επιστρέφει μια σχετικά τυχαία τιμή μεταξύ 0 και 1 με βάση τις τιμές x και y., εξ ου και οι πολύ μεγάλοι αριθμοί στην εξίσωση.
θόρυβος επίπλευσης (int x, int y) {int n; n = x + y * 57; n += (n << 13] ^ n; επιστροφή (1.0 - ((n * ((n * n * 15731) + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0); }
Στη συνέχεια, «εξομαλύνουμε» τον θόρυβο με μια άλλη λειτουργία. Αυτό επιτυγχάνεται με την παραγωγή μιας τιμής που βασίζεται όχι μόνο στο αποτέλεσμα της συντεταγμένης που μεταφέρεται στη συνάρτηση, αλλά και των γύρω συντεταγμένων. Ως αποτέλεσμα αυτού, οι συντεταγμένες που βρίσκονται κοντά η μία στην άλλη παράγουν παρόμοια τιμή.
float smoothNoise (float x, float y) {float fractX = x - (int) x; float fractY = y - (int) y; int x1 = ((int) (x) + noiseWidth) % noiseWidth; int y1 = ((int) (y) + noiseHeight) % noiseHeight; int x2 = (x1 + θόρυβος Πλάτος - 1) % θόρυβος Πλάτος; int y2 = (y1 + θόρυβος eψος - 1) % θόρυβος eψος; float value = 0.0f; θόρυβος += fractX * fractY * (x1, y1); τιμή += (1 - fractX) * θόρυβος fractY * (x2, y1); τιμή += fractX * (1 - fractY) * θόρυβος (x1, y2); τιμή += (1 - fractX) * (1 - fractY) * θόρυβος (x2, y2); επιστρεφόμενη αξία? }
Βήμα 3: Εφέ χρησιμοποιώντας ομαλό θόρυβο
Με αυτό δημιουργήσαμε δύο εφέ. Για να γίνει αυτό, κάναμε βρόχο σε κάθε εικονοστοιχείο στο OLED και πήραμε μια τυχαία τιμή θορύβου με βάση τις συντεταγμένες x και y αυτών των εικονοστοιχείων. Το πρώτο από αυτά τα εφέ δημιουργήσαμε χρησιμοποιώντας την τιμή που δημιουργήθηκε για να επιλέξετε ένα χρώμα και χρωματίσαμε αυτό το pixel με το προαναφερθέν χρώμα. Το δεύτερο αποτέλεσμα δημιουργήθηκε με παρόμοιο τρόπο, αλλά επίσης πολλαπλασιάσαμε το χρώμα με την παραγόμενη τιμή θορύβου. Αυτό έδωσε στο μοτίβο ένα πιο σκιασμένο αποτέλεσμα. Ο κωδικός που χρησιμοποιείται φαίνεται παρακάτω:
void Noise2n3 (bool Noisy) {for (int y = 0; y <noiseHeight; y ++) {for (int x = 0; x 8) absNoise = 8; εάν (Noisy) setNoisyColour (χρώματα [absNoise], θόρυβος)? else setBlockColour (χρώματα [absNoise]); TFTscreen.point (x, y); }}} void setNoisyColour (Χρώμα χρώματος, θόρυβος πλωτήρα) {TFTscreen.stroke (colour.red * noise, colour.green * noise, colour.blue * noise); } void setBlockColour (Χρώμα χρώματος) {TFTscreen.stroke (colour.red, colour.green, colour.blue); }
Βήμα 4: Τυχαία εφέ κλίσης
Υπάρχουν δύο εφέ που παράγουν μια τυχαία κλίση. Το πρώτο εφέ τοποθετεί τα εικονοστοιχεία σε σχέση με το χρώμα rgb, αποδίδοντας αργά ένα μοτίβο κλίσης στην οθόνη. Το δεύτερο χρησιμοποιεί τα ίδια έγχρωμα εικονοστοιχεία με το πρώτο, αλλά τα τοποθετεί σε μια σταθερή σειρά, δημιουργώντας μια διαγώνια κλίση κατά μήκος της οθόνης.
Εδώ είναι το πρώτο (με βάση τα χρώματα):
void Noise1 () {for (int z = 0; z <3; z ++) {TFTscreen.background (0, 0, 0); int CurrentColour [3] [3] = {{64, 35, 26}, {24, 64, 34}, {20, 18, 64}}; R = CurrentColour [z] [0]; G = CurrentColour [z] [1]; B = CurrentColour [z] [2]; για (int x = 0; x <128; x ++) {για (int y = 0; y <128; y ++) {int R_Lower = R - ((x+y) / 4); εάν (R_Lower = 255) {R_Higher = 254; } int R_Offset = τυχαίο (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); εάν (G_Lower = 255) {G_Higher = 254; } int G_Offset = τυχαίο (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); εάν (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); εάν (B_Higher> = 255) {B_Higher = 254; } int B_Offset = τυχαίο (B_Lower, B_Higher); int mult = 2; αν (z == 1) mult = 1; TFTscreen.stroke (R_Offset * mult, G_Offset * mult, B_Offset * mult); TFTscreen.point ((R_Offset * (B_Offset / 32)), (G_Offset * (B_Offset / 32))); TFTscreen.point ((G_Offset * (B_Offset / 32)), (R_Offset * (B_Offset / 32))); TFTscreen.point ((B_Offset * (G_Offset / 32)), (R_Offset * (G_Offset / 32))); }}}}
Και το δεύτερο (το πιο τακτικό αποτέλεσμα):
void Noise4 () {for (int z = 0; z <3; z ++) {TFTscreen.background (0, 0, 0); int CurrentColour [3] [3] = {{64, 35, 26}, {24, 64, 34}, {20, 18, 64}}; R = CurrentColour [z] [0]; G = CurrentColour [z] [1]; B = CurrentColour [z] [2]; για (int x = 0; x <128; x ++) {για (int y = 0; y <128; y ++) {int R_Lower = R - ((x+y) / 4); εάν (R_Lower = 255) {R_Higher = 254; } int R_Offset = τυχαίο (R_Lower, R_Higher); int G_Lower = G - ((x + y) / 4); εάν (G_Lower = 255) {G_Higher = 254; } int G_Offset = τυχαίο (G_Lower, G_Higher); int B_Lower = B - ((x + y) / 4); εάν (B_Lower <1) {B_Lower = 0; } int B_Higher = B + ((x + y) / 4); εάν (B_Higher> = 255) {B_Higher = 254; } int B_Offset = τυχαίο (B_Lower, B_Higher); int mult = 2; αν (z == 1) mult = 1; TFTscreen.stroke (R_Offset * mult, G_Offset * mult, B_Offset * mult); TFTscreen.point (x, y); }}}}
Βήμα 5: Το τελικό αποτέλεσμα
Στο τέλος, συνδυάσαμε αυτά τα εφέ σε ένα είδος "slideshow" ουράνιων τόξων. Για να το πετύχουμε αυτό, απλώς καλέσαμε κάθε συνάρτηση μετά την άλλη σε λίγο βρόχο:
ενώ (αληθές) {Noise2n3 (false); Noise2n3 (αληθινό); TFTscreen.background (0, 0, 0); Θόρυβος 1 (); Θόρυβος 4 (); }
Συνιστάται:
Neopixel Ws2812 Rainbow LED Glow With M5stick-C - Εκτέλεση Rainbow σε Neopixel Ws2812 Χρήση M5stack M5stick C Χρήση Arduino IDE: 5 Βήματα
Neopixel Ws2812 Rainbow LED Glow With M5stick-C | Running Rainbow on Neopixel Ws2812 Using M5stack M5stick C Using Arduino IDE: Γεια σας παιδιά σε αυτά τα εκπαιδευτικά θα μάθουμε πώς να χρησιμοποιούμε LED neopixel ws2812 ή led strip ή led matrix ή led με m5stack m5stick-C πίνακα ανάπτυξης με Arduino IDE και θα φτιάξουμε ένα μοτίβο ουράνιου τόξου με αυτό
Oceania Midi Controller (για Make Noise 0-Coast and Other Synths): 6 βήματα (με εικόνες)
Oceania Midi Controller (για Make Noise 0-Coast and Other Synths): Τα τελευταία χρόνια, ένας αριθμός κατασκευαστών συνθεσάιζερ κυκλοφορούν " επιτραπέζιους ημι-αρθρωτούς " όργανα. Παίρνουν γενικά τον ίδιο παράγοντα μορφής με τον τύπο αρθρωτού συνθεσάιζερ Eurorack και οι περισσότεροι πιθανότατα προορίζονται ως g
Πώς να φτιάξετε ρολόι σε πραγματικό χρόνο χρησιμοποιώντας οθόνη Arduino και TFT - Arduino Mega RTC με οθόνη TFT 3,5 ιντσών: 4 βήματα
Πώς να φτιάξετε ρολόι σε πραγματικό χρόνο χρησιμοποιώντας οθόνη Arduino και TFT | Arduino Mega RTC με οθόνη TFT 3,5 ιντσών: Επισκεφτείτε το κανάλι μου στο Youtube. Εισαγωγή:- Σε αυτήν την ανάρτηση πρόκειται να φτιάξω "Ρολόι πραγματικού χρόνου" χρησιμοποιώντας οθόνη αφής TFT 3,5 ιντσών, Arduino Mega Ενότητα 2560 και DS3231 RTC…. Πριν ξεκινήσετε… ελέγξτε το βίντεο από το κανάλι μου στο YouTube..Σημείωση:- Εάν χρησιμοποιείτε Arduin
Rainbow Shadow Museum Display: 10 βήματα (με εικόνες)
Rainbow Shadow Museum Display: Το σχολείο μου βρίσκεται στη θέση ενός μουσείου, του Δυτικού Επιστημονικού Κέντρου. Το WSC έχει οστά από πλάσματα της εποχής των παγετώνων (μαμούθ, μαστόδοντα, νωθρά κλπ.) Που ανασκάφηκαν κατά τη δημιουργία της δεξαμενής Diamond Valley Reservoir. Το σχολείο υιοθέτησε ένα «Museum Disco
Δημιουργήστε τα ακουστικά Ultimate Noise Cancelling: 6 βήματα
Δημιουργήστε τα ακουστικά Ultimate Noise Cancelling: Σήμερα θα δείξω σε όλους πώς να δημιουργούν ακουστικά που μεγιστοποιούν την ακύρωση θορύβου, συν το πολύ απλό. Διπλασιάστε τη διασκέδαση! Ουσιαστικά θα βάλουμε μαξιλαράκια αφρού, το οποίο είναι βασικά η μεγαλύτερη ακύρωση θορύβου που μπορείτε να ελπίζετε