Arduino MusicStump: Light, Captive Touch and a Buzzer: 3 Βήματα
Arduino MusicStump: Light, Captive Touch and a Buzzer: 3 Βήματα
Anonim
Arduino MusicStump: Light, Captive Touch and a Buzzer
Arduino MusicStump: Light, Captive Touch and a Buzzer

Ένα διαδραστικό δέντρο με ένα δαχτυλίδι LED στο επάνω μέρος, ένα βομβητή για να κάνει ήχο και έναν αιχμάλωτο αισθητήρα αφής στο εσωτερικό που αλλάζει το χρώμα καθώς το αγγίζετε. Για να κάνετε αυτό το διασκεδαστικό πράγμα θα χρειαστείτε τα εξής:

Ηλεκτρονικά:- 1x Arduino Uno

- 15x καλώδια

- 1x κολλητήρι με στρογγυλή άκρη

- 1x Adafruit 8-key captive touch (CAP1188)

- 1x καλώδιο τροφοδοσίας Arduino

- 1x 8 δακτύλιος LED

- 1x Buzzer

- 1x πιστόλι θερμής κόλλας

-Κατεβάστε τη βιβλιοθήκη του CAP1188

- Κατεβάστε τη βιβλιοθήκη του Adafruit Neopixel

Επιπλέον (περίβλημα):

- 1x κούτσουρο δέντρου

- 1x ραβδί για το εσωτερικό

- ξύλινη πιατέλα για να τα τοποθετήσετε όλα πάνω/μέσα

- Γεμιστά ζώα για το εξωτερικό

Μπορείτε επίσης να χρησιμοποιήσετε κάτι άλλο ως εξωτερικό, να είστε δημιουργικοί!

Τώρα ας ξεκινήσουμε…

Βήμα 1: Βήμα 1: Δαχτυλίδι LED με Captive Touch

Βήμα 1: Δαχτυλίδι LED με Captive Touch
Βήμα 1: Δαχτυλίδι LED με Captive Touch

Τώρα αν είστε τυχεροί, το δαχτυλίδι LED σας έχει ήδη κολλήσει καρφίτσες. Αν όχι, ήρθε η ώρα της συγκόλλησης!

Τα πράγματα που θα χρησιμοποιήσουμε για αυτό το έργο είναι:

- DI (Digitalηφιακή είσοδος, pin 6

- 5V (για ισχύ, ακίδα 5V)

- GND (Το έδαφος, καρφίτσα GND)

Αυτός είναι ο δακτύλιος LED προς το παρόν. Τώρα το αιχμάλωτο άγγιγμα.

Τοποθετήστε το σε ένα breadboard και συνδέστε τα πάντα ως εξής: SDA/MISO σε ακίδα (αναλογικό σε) A4SCK σε καρφίτσα (αναλογικό σε) A5VIN σε (ισχύ) 5VGND σε καλώδιο GND pin1x στο C1 (στο ίδιο το Captive touch)

Τώρα για δοκιμή, ανεβάστε τον ακόλουθο κώδικα στο Arduino σας:

// Julia Emmink // Κωδικός φωτισμού και αφής για το διαδραστικό δέντρο 19 /// Κατασκευάστηκε με τη χρήση του Adafruit Neopixel και του Adafruit captive touch (CAP1188) (πρόκειται να εγκατασταθεί) και το LED αναβοσβήνει χωρίς καθυστέρηση

// NEOPIXEL

#περιλαμβάνω

#define PIXELSPIN 6 // Όπου συνδέσατε το δαχτυλίδι LED

#define NUMPIXELS 8 // Το ποσό των LED που υπάρχουν στο δαχτυλίδι σας #καθορίστε CALIBRATIONTIME 20000

Εικονοστοιχεία Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

ανυπόγραφα μακριά pixelsInterval = 500; // ο χρόνος που πρέπει να περιμένουμε

ανυπόγραφο μακρύ χρώμαWipePreviousMillis = 0; ανυπόγραφο μακρύ θέατροChasePreviousMillis = 0; ανυπόγραφο μακρύ ουράνιο τόξοΠροηγούμενοςΜίλις = 0; ανυπόγραφο μακρύ ουράνιο τόξοCyclesPrecomeMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // σε ποιο pixel λειτουργούμε

// Αγγίξτε

#συμπεριλάβω #συμπεριλάβω #συμπεριλάβω

// Το Reset Pin χρησιμοποιείται για I2C ή SPI

#define CAP1188_RESET 9

// Το CS pin χρησιμοποιείται για SPI λογισμικού ή υλικού

#define CAP1188_CS 10

// Αυτά ορίζονται για SPI λογισμικού, για SPI υλικού, ελέγξτε το

// καρφίτσες SPI του πίνακα στην τεκμηρίωση Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Χρησιμοποιήστε I2C, χωρίς καρφίτσα επαναφοράς!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Αυτό προετοιμάζει τη βιβλιοθήκη NeoPixel. pixels.show (); // Αυτό στέλνει το ενημερωμένο χρώμα pixel στο υλικό.

// Αγγίξτε

Serial.begin (300); Serial.println ("δοκιμή CAP1188!");

αν (! cap.begin ()) {

Serial.println ("Το CAP1188 δεν βρέθηκε"); ενώ (1)? } Serial.println ("Το CAP1188 βρέθηκε!"); }

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); εάν (αγγίξει == 0) {if ((χωρίς υπογραφή μακρύ) (χιλιοστά () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((χωρίς υπογραφή μακρύ) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Απαλλάσσεται από το χρώμα pixels.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel - 1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Δοκιμάστε το και διασκεδάστε! Όπως βλέπετε όταν αγγίζετε το καλώδιο C1 το χρώμα αλλάζει. (Εάν δεν είναι η πρώτη φορά, απλώς αποσυνδέστε το Arduino και συνδέστε το ξανά στον υπολογιστή σας.)

Βήμα 2: Βήμα 2: Προσθήκη ήχου

Με τη χρήση ενός εύχρηστου σεμιναρίου το έφτιαξα αυτό. Το σεμινάριο είναι παρακάτω:

github.com/xitangg/-Pirates-of-the-Caribbe…

Timeρα να πιάσετε το κουδούνι σας! Τοποθετήστε το (-) του βομβητή σε μία από τις ακίδες GND και το (+) στον πείρο 10

Αυτό είναι περίπου, τώρα ήρθε η ώρα να τρέξουμε ξανά τον κώδικα και να ακούσουμε αυτό το υπέροχο τραγούδι των Πειρατών της Καραϊβικής! Τώρα διασκεδάστε τις δοκιμές!

// Julia Emmink // Κωδικός φωτός, αφής και μουσικής για το διαδραστικό δέντρο 2018-01-19 // Κατασκευασμένο με τη χρήση των Adafruit Neopixel και Captive Touch (CAP1188) (πρόκειται να εγκατασταθεί) και το LED να αναβοσβήνει χωρίς καθυστέρηση

// NEOPIXEL ~~~~~~~~~~~~~~~~~~#περιλαμβάνει

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

Εικονοστοιχεία Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

ανυπόγραφα μακριά pixelsInterval = 500; // ο χρόνος που πρέπει να περιμένουμε

ανυπόγραφο μακρύ χρώμαWipePreviousMillis = 0; ανυπόγραφο μακρύ θέατροChasePreviousMillis = 0; ανυπόγραφο μακρύ ουράνιο τόξοΠροηγούμενοςΜίλις = 0; ανυπόγραφο μακρύ ουράνιο τόξοCyclesPrecomeMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // σε ποιο pixel λειτουργούμε

// ΜΟΥΣΙΚΗ

const int buzzer = 10; // Ορίστε τον πείρο 10, μπορεί να χρησιμοποιήσει άλλους ακροδέκτες PWM (5, 6 ή 9) // Οι καρφίτσες σημείωσης 3 και 11 δεν μπορούν να χρησιμοποιηθούν όταν χρησιμοποιείτε τη λειτουργία τόνου στο Arduino Uno const int songspeed = 1.5; // Αλλάξτε σε 2 για μια πιο αργή έκδοση του τραγουδιού, όσο μεγαλύτερος είναι ο αριθμός τόσο πιο αργό είναι το τραγούδι // ************************** ************** #καθορίστε NOTE_C4 262 // Καθορισμός συχνότητας σημειώσεων #καθορίστε NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 #define 523 #define NOTE_D5 587 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_G5 784 #define NOTE_A5 880 #define NOTE_B5 988 // *********************** ****************** int σημειώσεις = {// Σημείωση του τραγουδιού, το 0 είναι ανάπαυση/παλμός NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0, NOTE_A4, NOTE_G4, NOTE_A4, 0}; // ************************************** int διάρκεια = { / /διάρκεια κάθε νότας (σε ms) Η Τετάρτη Σημείωση ορίζεται σε 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// Αγγίξτε

#συμπεριλάβω #συμπεριλάβω #συμπεριλάβω

// Το Reset Pin χρησιμοποιείται για I2C ή SPI

#define CAP1188_RESET 9

// Το CS pin χρησιμοποιείται για SPI λογισμικού ή υλικού

#define CAP1188_CS 10

// Αυτά ορίζονται για SPI λογισμικού, για SPI υλικού, ελέγξτε το

// καρφίτσες SPI του πίνακα στην τεκμηρίωση Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Χρησιμοποιήστε I2C, χωρίς καρφίτσα επαναφοράς!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 είναι ο συνολικός αριθμός μουσικών νότες σε το τραγούδι int wait = διάρκεια * songspeed; τόνος (βομβητής, σημειώσεις , αναμονή)? // τόνος (καρφίτσα, συχνότητα, διάρκεια);} // η καθυστέρηση χρησιμοποιείται, ώστε να μην μεταβεί στον επόμενο βρόχο πριν τελειώσει η αναπαραγωγή του τόνου // Μπορείτε να κάνετε κλικ στην επαναφορά στο Arduino για επανάληψη του τραγουδιού // NEOPIXEL ~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Αυτό προετοιμάζει τη βιβλιοθήκη NeoPixel. pixels.show (); // Αυτό στέλνει το ενημερωμένο χρώμα pixel στο υλικό.

// Αγγίξτε

Serial.begin (300); Serial.println ("δοκιμή CAP1188!"); if (! cap.begin ()) {Serial.println ("Το CAP1188 δεν βρέθηκε"); ενώ (1)? } Serial.println ("Το CAP1188 βρέθηκε!");

}

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); εάν (αγγίξει == 0) {if ((χωρίς υπογραφή μακρύ) (χιλιοστά () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((χωρίς υπογραφή μακρύ) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

για (int i = 0; i = pixelsInterval) {

colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((χωρίς υπογραφή μακρύ) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

καθυστέρηση (αναμονή)?

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Απαλλάσσεται από τα χρώματα pixels.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel-1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Βήμα 3: Πρόσθετο βήμα: Κάνοντας το Stump «Arduino Ready»

Πρόσθετο βήμα: Κάνοντας το Stump «Arduino Ready»
Πρόσθετο βήμα: Κάνοντας το Stump «Arduino Ready»
Πρόσθετο βήμα: Κάνοντας το Stump «Arduino Ready»
Πρόσθετο βήμα: Κάνοντας το Stump «Arduino Ready»
Πρόσθετο βήμα: Κάνοντας το Stump «Arduino Ready»
Πρόσθετο βήμα: Κάνοντας το Stump «Arduino Ready»

Εάν αποφασίσετε να χρησιμοποιήσετε ένα κούτσουρο δέντρου, πρέπει να κάνετε τα εξής.

  • Πάρτε ένα κούτσουρο δέντρου (πήρα ένα από ένα παλιό χριστουγεννιάτικο δέντρο δωρεάν)
  • Μετρήστε το Arduino σας και δείτε πώς θέλετε να έχετε την καλωδίωση στο κούτσουρο του δέντρου
  • Κοίλα έξω το κούτσουρο (χρησιμοποίησα μηχανή τρυπανιών από το σχολείο)
  • Τρίψτε τις τραχιές άκρες
  • Προσθέστε διασκεδαστικές μικρές λεπτομέρειες

Λεπτομέρειες που πρόσθεσα ήταν ένα μικρό λογότυπο που έφτιαξα με κόπτη λέιζερ. Επίσης, στοίβαξα όλα τα ηλεκτρονικά μου μέσα σε ένα ραβδί μέσα στο δέντρο μου και πρόσθεσα γεμιστά ζώα στο εξωτερικό για να περάσει το φως και να δώσει αυτή τη μικρή επιπλέον απαλότητα.