Мазмұны:

Arduino MusicStump: жеңіл, тұтқын сенсор және дыбыстық сигнал: 3 қадам
Arduino MusicStump: жеңіл, тұтқын сенсор және дыбыстық сигнал: 3 қадам

Бейне: Arduino MusicStump: жеңіл, тұтқын сенсор және дыбыстық сигнал: 3 қадам

Бейне: Arduino MusicStump: жеңіл, тұтқын сенсор және дыбыстық сигнал: 3 қадам
Бейне: Stomp Shield for Arduino 2024, Шілде
Anonim
Arduino MusicStump: жеңіл, тұтқын сенсор және дыбыстық сигнал
Arduino MusicStump: жеңіл, тұтқын сенсор және дыбыстық сигнал

Жоғарғы жағында жарықдиодты сақинасы бар интерактивті ағаш, дыбыс шығаратын дыбыстық сигнал және сенсорлық сенсор сенсоры бар, оның түсі өзгереді. Бұл қызықты нәрсені жасау үшін сізге мыналар қажет:

Электроника:- 1x Arduino Uno

- 15x кабель

- дөңгелек ұшы бар 1x дәнекерлеу үтігі

- 1x Adafruit 8 пернелі тұтқалы сенсор (CAP1188)

- 1x Arduino қуат кабелі

- 1х8 жарықдиодты сақина

- 1 рет дыбыстық сигнал

- 1 рет ыстық желім пистолеті

-CAP1188 кітапханасын жүктеңіз

- Adafruit Neopixel кітапханасын жүктеңіз

Қосымша (корпус):

- 1 дана ағаш діңі

- 1x ішіне арналған таяқша

- бәрін орналастыруға арналған ағаш табақ

- Жануарларға сыртынан толтырылған фарш

Сіз басқа нәрсені сыртта қолдана аласыз, шығармашылықпен айналысыңыз!

Енді бастайық…

1 -қадам: 1 -қадам: Captive Touch бар LED сақинасы

1 -қадам: Captive Touch бар жарықдиодты сақина
1 -қадам: Captive Touch бар жарықдиодты сақина

Енді сәттілік болса, жарықдиодты сақинаның түйреуіштері бекітілген. Олай болмаса, дәнекерлеу уақыты келді!

Бұл жобада біз қолданатын нәрселер:

- DI (Сандық кіріс, пин 6 ~

- 5В (қуат үшін, 5В түйреуіш)

- GND (Жер, GND түйреуіші)

Бұл жарық диодты сақина.

Оны тақтаға салыңыз және барлығын келесідей қосыңыз: SDA/MISO түйреуіште (аналогы) A4SCK түйреуішінде (аналогы) A5VIN -дегі (қуаты) 5VGND GND pin1x кабеліндегі C1 (Captive touch -тің өзінде)

Енді тестілеу үшін келесі кодты Arduino -ға жүктеңіз:

// Джулия Эмминк // Интерактивті ағаштың жарық және сенсорлық коды 19 /// Adafruit Neopixel және Adafruit тұтқалы сенсоры (CAP1188) көмегімен орнатылады (светодиод кідіріссіз жыпылықтайды).

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

#қосу

#dexine PIXELSPIN 6 // Жарықдиодты сақинаны қай жерге қосқансыз

#NUMPIXELS 8 -ді анықтаңыз // Сақинадағы жарықдиодты шамалардың саны #CALIBRATIONTIME 20000 анықтаңыз

Adafruit_NeoPixel пиксельдері = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

белгісіз ұзын пиксельдер Interval = 500; // біз күтуіміз керек уақыт

белгісіз ұзын colorWipePreviousMillis = 0; белгісіз ұзақ театрChasePreviousMillis = 0; белгісіз ұзын кемпірқосақPreviousMillis = 0; белгісіз ұзын кемпірқосақCyclesPreviousMillis = 0;

int театрChaseQ = 0;

uint16_t currentPixel = 0; // біз қандай пиксельде жұмыс жасаймыз

// ТИІСТІ ~~~~~~~~~~~~~~~~~~~~~~

#қосу #қосу #қосу

// PIN кодын қалпына келтіру I2C немесе SPI үшін қолданылады

CAP1188_RESET 9 анықтаңыз

// CS пині SPI бағдарламалық немесе аппараттық үшін қолданылады

#CAP1188_CS 10 анықтаңыз

// Олар SPI бағдарламалық жасақтамасы үшін, SPI аппараттық құралдары үшін анықталады

// тақтаның SPI түйіндері Arduino құжаттамасында #CAP1188_MOSI 11 анықтаңыз #CAP1188_MISO 12 анықтаңыз #CAP1188_CLK 13 анықтаңыз

// I2C пайдаланыңыз, қалпына келтіру түйреуі жоқ!

Adafruit_CAP1188 қақпағы = Adafruit_CAP1188 ();

жарамсыз орнату () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ currentPixel = 0; piksel.begin (); // Бұл NeoPixel кітапханасын инициализациялайды. пиксель.шоу (); // Бұл жаңартылған пиксель түсін аппараттық құралға жібереді.

// ТИІСТІ ~~~~~~~~~~~~~~~~~~~~~~

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 (); if (түртіп == 0) {if ((белгісіз ұзақ) (миллис () - colorWipePreviousMillis)> = пиксель интервал) {colorWipePreviousMillis = millis (); colorWipe (пиксель. Түс (0, 255, 125)); }} else {if ((белгісіз ұзақ) (миллис () - colorWipePreviousMillis)> = пикселдер аралығы) {colorWipePreviousMillis = millis (); colorWipe (пиксель. Түс (100, 0, 150)); }}

}

жарамсыз colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // пикселдер.setPixelColor (currentPixel, c) түстерінен арылады; pixel.setPixelColor (currentPixel - 1, пиксел. Color (0, 0, 0)); пиксель.шоу (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; piksel.setPixelColor (7, пиксель. Түс (0, 0, 0));

}

}

Оны сынап көріңіз және көңілді болыңыз! Көріп отырғаныңыздай, C1 сымын ұстаған кезде түсі өзгереді. (Егер бұл бірінші рет болмаса, Arduino -ны ажыратып, компьютерге қайта қосыңыз.)

2 -қадам: 2 -қадам: Дыбыс қосу

Қолайлы оқулықтың көмегімен мен мұны жасадым. Оқу құралы төменде:

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

Дауыс шығаратын уақыт келді! Дыбыстық сигналдың (-) белгісін GND түйреуіштерінің біріне, (+) түйреуішке 10 ~ салыңыз

Бұл туралы, енді кодты қайтадан іске қосып, Кариб теңізінің керемет қарақшыларының әуенін естудің уақыты келді! Енді тестті көңілді өткізіңіз!

// Джулия Эмминк // Интерактивті ағашқа арналған жарық, сенсорлық және музыкалық код 2018-01-19 // Adafruit Neopixel және Captive Touch (CAP1188) көмегімен орнатылған (жарық диоды кешіктірмей жыпылықтайды).

// NEOPIXEL ~~~~~~~~~~~~~~~~~#қамтиды

#PIXELSPIN 6 анықтаңыз

#анықтаңыз NUMPIXELS 8 #калибрлеу уақытын анықтаңыз 20000

Adafruit_NeoPixel пиксельдері = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

белгісіз ұзын пиксельдер Interval = 500; // біз күтуіміз керек уақыт

белгісіз ұзын colorWipePreviousMillis = 0; белгісіз ұзақ театрChasePreviousMillis = 0; белгісіз ұзын кемпірқосақPreviousMillis = 0; белгісіз ұзын кемпірқосақCyclesPreviousMillis = 0;

int театрChaseQ = 0;

uint16_t currentPixel = 0; // біз қандай пиксельде жұмыс жасаймыз

// МУЗЫКА ~~~~~~~~~~~~~~~~~~~~~~

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 #Анықтау NOTE_E4 330 #Анықтау NOTE_F4 349 #Анықтау NOTE_G4 392 #Анықтау NOTE_A4 440 #Анықтау NOTE_B4 494 #Анықтау NOTE_C5 523 #Анықтау NOTE_D5 587 #Анықтау NOTE_E5 659 #Анықтау NOTE_F5 698 #Анықтау NOTE_G5 784 #Анықтау NOTE_A5 880 #Анықтау NOTE_B5 988 // *********************** ****************** int notes = {// Әннің нотасы, 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 ұзақтығы = { / /әр жазбаның ұзақтығы (мсмен) Тоқсандық ескерту 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// ТИІСТІ ~~~~~~~~~~~~~~~~~~~~~~

#қосу #қосу #қосу

// PIN кодын қалпына келтіру I2C немесе SPI үшін қолданылады

CAP1188_RESET 9 анықтаңыз

// CS пині SPI бағдарламалық немесе аппараттық үшін қолданылады

#CAP1188_CS 10 анықтаңыз

// Олар SPI бағдарламалық жасақтамасы үшін, SPI аппараттық құралдары үшін анықталады

// тақтаның SPI түйіндері Arduino құжаттамасында #CAP1188_MOSI 11 анықтаңыз #CAP1188_MISO 12 анықтаңыз #CAP1188_CLK 13 анықтаңыз

// I2C пайдаланыңыз, қалпына келтіру түйреуі жоқ!

Adafruit_CAP1188 қақпағы = Adafruit_CAP1188 ();

жарамсыз орнату () {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 - бұл музыкалық ноталардың жалпы саны ән int күту = ұзақтығы * әннің жылдамдығы; үн (зуммер, ноталар , күту); // тон (түйреуіш, жиілік, ұзақтығы);} // кідіріс пайдаланылады, сондықтан ол тонды ойнату аяқталғанға дейін келесі циклге өтпейді // Әнді қайта ойнату үшін Arduino -да қалпына келтіру түймесін басуға болады // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~~ currentPixel = 0; piksel.begin (); // Бұл NeoPixel кітапханасын инициализациялайды. пиксель.шоу (); // Бұл жаңартылған пиксель түсін аппараттық құралға жібереді.

// ТИІСТІ ~~~~~~~~~~~~~~~~~~~~~~

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 (); if (түртіп == 0) {if ((белгісіз ұзақ) (миллис () - colorWipePreviousMillis)> = пиксель интервал) {colorWipePreviousMillis = millis (); colorWipe (пиксель. Түс (0, 255, 125)); }} else {if ((белгісіз ұзын) (millis () - colorWipePreviousMillis)> = пикселдер аралығы) {colorWipePreviousMillis = millis (); colorWipe (пиксель. Түс (100, 0, 150)); }}

үшін (int i = 0; i = пиксель аралығы) {

colorWipePreviousMillis = millis (); colorWipe (пиксель. Түс (0, 255, 125)); }} else {if ((белгісіз ұзын) (millis () - colorWipePreviousMillis)> = пикселдер аралығы) {colorWipePreviousMillis = millis (); colorWipe (пиксель. Түс (100, 0, 150)); }}

кешіктіру (күту);

}

}

жарамсыз colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Пиксельдер түсінен арылады.setPixelColor (currentPixel, c); pixel.setPixelColor (currentPixel-1, пиксел. Color (0, 0, 0)); пиксель.шоу (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; piksel.setPixelColor (7, пиксель. Түс (0, 0, 0));

}

}

3 -қадам: Қосымша қадам: «Arduino» діңгегін дайындау

Қосымша қадам: «Arduino» діңгегін дайындау
Қосымша қадам: «Arduino» діңгегін дайындау
Қосымша қадам: «Arduino» діңгегін дайындау
Қосымша қадам: «Arduino» діңгегін дайындау
Қосымша қадам: «Arduino» діңгегін дайындау
Қосымша қадам: «Arduino» діңгегін дайындау

Егер сіз ағаш бұтақтарын қолдануды шешсеңіз, келесі әрекеттерді орындауыңыз керек.

  • Ағаш діңін алыңыз (мен ескі шыршадан тегін алдым)
  • Arduino -ны өлшеп, ағаш діңінде сым қалай орнатқыңыз келетінін көріңіз
  • Діңгекті босатыңыз (мен мектептен бұрғылау машинасын қолдандым)
  • Дөрекі жиектерді тегістеңіз
  • Кішкене қызықты мәліметтерді қосыңыз

Мен қосқан мәліметтер лазерлік кескішпен жасаған шағын логотип болды. Мен сонымен қатар барлық электрониканы ағаштың ішіндегі таяқшаның үстіне қойдым, мен оған жарықтың өтуіне және оған қосымша жұмсақтық беру үшін сыртынан жануарлардың фарштарын қостым.

Ұсынылған: