Spisu treści:

Arduino MusicStump: lekki, Captive Touch i brzęczyk: 3 kroki
Arduino MusicStump: lekki, Captive Touch i brzęczyk: 3 kroki

Wideo: Arduino MusicStump: lekki, Captive Touch i brzęczyk: 3 kroki

Wideo: Arduino MusicStump: lekki, Captive Touch i brzęczyk: 3 kroki
Wideo: Stomp Shield for Arduino 2024, Listopad
Anonim
Arduino MusicStump: lekki, Captive Touch i brzęczyk
Arduino MusicStump: lekki, Captive Touch i brzęczyk

Interaktywne drzewo z pierścieniem LED na górze, brzęczykiem do wydawania dźwięku i wbudowanym czujnikiem dotykowym, który zmienia kolor, gdy go dotkniesz. Aby zrobić to zabawne drobiazg, potrzebujesz:

Elektronika:- 1x Arduino Uno

- 15x kable

- 1x lutownica z okrągłą końcówką

- 1x Adafruit 8-klawiszowy dotyk (CAP1188)

- 1x kabel zasilający Arduino

- 1x pierścień 8 LED

- 1x brzęczyk

-1x pistolet do klejenia na gorąco

- Pobierz bibliotekę CAP1188

- Pobierz bibliotekę Adafruit Neopixel

Dodatkowe (obudowa):

- 1x pień drzewa

- 1x kij do wewnątrz

- drewniany talerz do umieszczenia wszystkiego na/w

- Wypchane zwierzę nadziewane na zewnątrz

Możesz też użyć czegoś innego, jak na zewnątrz, bądź kreatywny!

Teraz zacznijmy…

Krok 1: Krok 1: Pierścień LED z Captive Touch

Krok 1: Pierścień LED z Captive Touch
Krok 1: Pierścień LED z Captive Touch

Teraz, jeśli masz szczęście, twój pierścień LED ma już dołączone piny. Jeśli nie, czas na lutowanie!

Rzeczy, których będziemy używać w tym projekcie, to:

- DI (wejście cyfrowe, pin 6~

- 5V (do zasilania, pin 5V)

- GND (masa, pin GND)

To na razie pierścień LED. Teraz zniewolony dotyk.

Umieść go w płytce stykowej i podłącz wszystko w następujący sposób: SDA/MISO na pinie (analogowe) A4SCK na pinie (analogowe) A5VIN in (zasilanie) 5VGND w kablu GND pin1x na C1 (na samym Captive Touch)

Teraz, aby przetestować, wgraj następujący kod do swojego Arduino:

// Julia Emmink// Kod świetlny i dotykowy dla interaktywnego drzewa 19/// Wykonany z wykorzystaniem Adafruit Neopixel i Adafruit captive touch (CAP1188) (do zainstalowania) oraz diody LED migającej bez opóźnień

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~

#włączać

#define PIXELSPIN 6 // Gdzie podłączono pierścień LED

#define NUMPIXELS 8 //Ilość diod LED na twoim pierścieniu #define CALIBRATIONTIME 20000

Adafruit_NeoPixel piksele = Adafruit_NeoPixel(LICZBA PIKSELÓW, PIXELS, NEO_GRB + NEO_KHZ800);

długie piksele bez znaku Interwał = 500; // czas jaki musimy czekać

unsigned long colorWipePreviousMillis = 0; unsigned long theatreChasePreviousMillis = 0; unsigned long rainbowPreviousMillis = 0; unsigned long rainbowCyclesPreviousMillis = 0;

int teatrChaseQ = 0;

uint16_t currentPixel = 0;// na jakim pikselu operujemy

// DOTYK ~~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin jest używany do I2C lub SPI

#define CAP1188_RESET 9

// pin CS jest używany do programowego lub sprzętowego SPI

#define CAP1188_CS 10

// Są one zdefiniowane dla SPI oprogramowania, dla SPI sprzętu sprawdź swój

// piny SPI płytki w dokumentacji Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Użyj I2C, bez resetowania!

Adafruit_CAP1188 czapka = Adafruit_CAP1188();

pusta konfiguracja () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ bieżący piksel = 0; piksele.początek(); // Inicjuje bibliotekę NeoPixel. piksele.pokaż(); // Wysyła zaktualizowany kolor piksela do sprzętu.

// DOTYK ~~~~~~~~~~~~~~~~~~~~~~~

Serial.początek(300); Serial.println("Test CAP1188!");

if (! cap.begin()) {

Serial.println("Nie znaleziono CAP1188"); natomiast (1); } Serial.println("Znaleziono CAP1188!"); }

pusta pętla () {

// DOTYK + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched(); if (touched == 0) { if ((unsigned long)(millis() - colorWipePreviousMillis) >=pixelInterval) { colorWipePreviousMillis = millis(); colorWipe(piksele. Kolor(0, 255, 125)); } } else { if ((unsigned long)(millis() - colorWipePreviousMillis) >=pixelInterval) { colorWipePreviousMillis = millis(); colorWipe(piksele. Kolor(100, 0, 150)); } }

}

void colorWipe(uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ //Pozbywa się koloru pikseli.setPixelColor(currentPixel, c); piksele.setPixelColor(currentPixel - 1, piksele. Color(0, 0, 0)); piksele.pokaż(); obecnyPixel++; if (bieżący piksel == LICZBA PIKSELI) { bieżący piksel = 0; piksele.setPixelColor(7, piksele. Color(0, 0, 0));

}

}

Przetestuj i baw się dobrze! Jak widać, po dotknięciu przewodu C1 zmienia się kolor. (Jeśli nie za pierwszym razem, po prostu odłącz Arduino i podłącz go z powrotem do komputera.)

Krok 2: Krok 2: Dodawanie dźwięku

Zrobiłem to za pomocą podręcznego tutoriala. Samouczek znajduje się poniżej:

github.com/xitangg/-Piraci-Karaibów…

Czas złapać brzęczyk! Umieść (-) brzęczyka w jednym z pinów GND, a (+) w pinie 10~

To wszystko, teraz czas ponownie uruchomić kod i usłyszeć tę uroczą melodię Piraci z Karaibów! Teraz baw się dobrze podczas testowania!

// Julia Emmink// Kod światła, dotyku i muzyki do interaktywnego drzewka 19.01.2018// Wykonany z wykorzystaniem Adafruit Neopixel i Captive Touch (CAP1188) (do zainstalowania) oraz diody LED migającej bez opóźnień

// NEOPIXEL ~~~~~~~~~~~~~~~~~~#włącz

#define PIXELSPIN 6

#define LICZBA PIKSELI 8 #define CZAS KALIBRACJI 20000

Adafruit_NeoPixel piksele = Adafruit_NeoPixel(LICZBA PIKSELÓW, PIXELS, NEO_GRB + NEO_KHZ800);

długie piksele bez znaku Interval=500; // czas jaki musimy czekać

unsigned long colorWipePreviousMillis=0; unsigned long theatre ChasePreviousMillis=0; unsigned long rainbowPreviousMillis=0; unsigned long rainbowCyclesPreviousMillis=0;

int teatrChaseQ = 0;

uint16_t currentPixel = 0;// na jakim pikselu operujemy

// MUZYKA ~~~~~~~~~~~~~~~~~~~~~~

const int brzęczyk = 10; //Zdefiniuj pin 10, może używać innych pinów PWM (5, 6 lub 9) //Uwaga piny 3 i 11 nie mogą być używane podczas korzystania z funkcji tonu w Arduino Uno const int songspeed = 1.5; //Zmień na 2, aby uzyskać wolniejszą wersję utworu, im większa liczba, tym wolniejsza piosenka //**************************** ************** #define NOTE_C4 262 //Define NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 #define NOTE_C5 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 notes = { //Notatka utworu, 0 to odpoczynek/impuls 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 czas trwania = { / /czas trwania każdej nuty (w ms) Ćwierćnuta jest ustawiona na 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// DOTYK ~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin jest używany do I2C lub SPI

#define CAP1188_RESET 9

// pin CS jest używany do programowego lub sprzętowego SPI

#define CAP1188_CS 10

// Są one zdefiniowane dla SPI oprogramowania, dla SPI sprzętu sprawdź swój

// piny SPI płytki w dokumentacji Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Użyj I2C, bez resetowania!

Adafruit_CAP1188 czapka = Adafruit_CAP1188();

pusta konfiguracja () {

// MUZYKA ~~~~~~~~~~~~~~~~~~~~~~ for (int i=0;i<203;i++){ //203 to całkowita liczba nut w utwór int wait = czas trwania * songspeed; ton(brzęczyk, notatki, czekaj); //ton(pin, częstotliwość, czas trwania);} //opóźnienie jest używane, aby nie przechodziło do następnej pętli przed zakończeniem odtwarzania dźwięku //Możesz kliknąć reset na Arduino, aby odtworzyć utwór // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ bieżącyPixel = 0; piksele.początek(); // Inicjuje bibliotekę NeoPixel. piksele.pokaż(); // Wysyła zaktualizowany kolor piksela do sprzętu.

// DOTYK ~~~~~~~~~~~~~~~~~~~~~~

Serial.początek(300); Serial.println("Test CAP1188!"); if (!cap.begin()) { Serial.println("Nie znaleziono CAP1188"); natomiast (1); } Serial.println("Znaleziono CAP1188!");

}

pusta pętla () {

// DOTYK + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched(); if (touched == 0) { if ((unsigned long)(millis() - colorWipePreviousMillis) >=pixelInterval) { colorWipePreviousMillis = millis(); colorWipe(piksele. Kolor(0, 255, 125)); } } else { if ((unsigned long)(millis() - colorWipePreviousMillis) >=pixelInterval) { colorWipePreviousMillis = millis(); colorWipe(piksele. Kolor(100, 0, 150)); } }

for (int i=0;i= pikseliInterwał) {

colorWipePreviousMillis = millis(); colorWipe(piksele. Kolor(0, 255, 125)); } } else { if ((unsigned long)(millis() - colorWipePreviousMillis) >=pixelInterval) { colorWipePreviousMillis = millis(); colorWipe(piksele. Kolor(100, 0, 150)); }}

opóźnienie (czekaj);

}

}

void colorWipe(uint32_t c){

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ //Pozbywa się koloru pikseli.setPixelColor(currentPixel, c); piksele.setPixelColor(currentPixel-1, piksele. Color(0, 0, 0)); piksele.pokaż(); obecnyPixel++; if(bieżący piksel == LICZBA PIKSELI){ bieżący piksel = 0; piksele.setPixelColor(7, piksele. Color(0, 0, 0));

}

}

Krok 3: Dodatkowy krok: Przygotowanie kikuta „Arduino Ready”

Dodatkowy krok: przygotowanie kikuta do stanu gotowości na Arduino
Dodatkowy krok: przygotowanie kikuta do stanu gotowości na Arduino
Dodatkowy krok: przygotowanie kikuta do stanu gotowości na Arduino
Dodatkowy krok: przygotowanie kikuta do stanu gotowości na Arduino
Dodatkowy krok: przygotowanie kikuta do stanu gotowości na Arduino
Dodatkowy krok: przygotowanie kikuta do stanu gotowości na Arduino

Jeśli zdecydujesz się użyć pnia drzewa, musisz wykonać następujące czynności.

  • Zdobądź pień drzewa (dostałem jeden ze starej choinki za darmo)
  • Zmierz Arduino i zobacz, jak chcesz mieć okablowanie w pniu drzewa
  • Wydrąż kikut (użyłem wiertarki ze szkoły)
  • Zeszlifuj szorstkie krawędzie
  • Dodaj zabawne drobne szczegóły

Dodałem małe logo, które wykonałem wycinarką laserową. Ułożyłem też całą moją elektronikę wewnątrz na patyku wewnątrz drzewa i dodałem wypchane zwierzę na zewnątrz, aby przepuścić światło i nadać tej małej dodatkowej miękkości.

Zalecana: