Spisu treści:
Wideo: Ramię do rysowania sterowane dźwiękiem - projekt Arduino School: 4 kroki (ze zdjęciami)
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
To mój pierwszy raz, kiedy pracuję z Arduino i pracuję z czymś takim w historii, przepraszam, jeśli popełniłem jakieś błędy! Wpadłem na ten pomysł, gdy pomyślałem o moich hobby, czyli rysunku i muzyce. Więc spróbowałem połączyć te dwie rzeczy w to! Samo rysujące ramię, na które wpływa dźwięk.
Krok 1: Krok 1: Materiały
- Arduino Uno
- Deska do krojenia chleba
- Detektor dźwięku (Sparkfun sen-12642)
- 2 (mini) serwa
- Krawaty / opaski na suwak
- Trochę drewna i papieru
- coś, czym możesz rysować/pisać
Krok 2: Krok 2: Konfiguracja
Najpierw podłączyłem Servo, a potem detektor dźwięku. Detektor dźwięku Sparkfun sen-12642 posiada 3 wyjścia, ja użyłem tylko wyjścia „koperta”.
Serwo 1 = pin ~9
Serwo 2 = pin ~10
Detektor dźwięku = pin A0
Czerwone linie (5v) są połączone ze stroną dodatnią na płytce stykowej, a czarne linie (masa) są połączone ze stroną ujemną.
Krok 3: Krok 3: Nieelektronika
Upewnij się, że serwa są stabilne i we właściwym miejscu. Użyłem owijek do krawatów, aby je uspokoić. Następnie przywiązałem (wymienne) górne części serwa do drewnianych ramion za pomocą tie wrapów. Następnie możesz połączyć drewniane części ramion z serwomechanizmem. Podłącz wszystkie przewody do Arduino i płytki stykowej.
Następnie przylutowałem przewody do detektora dźwięku.
Krok 4: Krok 4: Kod
Wcale nie jestem dobry w kodowaniu, ale starałem się, a internet bardzo pomógł:)
#include Servo myservo1; Serwo myservo2; int poz = 0; int PIN_ANALOG_IN = A0;
void setup(){ Serial.begin(9600);
// Wyświetl stan
Serial.println("Zainicjowany"); myservo1.attach(9); myservo2.attach(10); }
pusta pętla()
{ wartość int;
// Sprawdź wpisane koperty
wartość = odczyt analogowy(PIN_ANALOG_IN);
// Wartość koperty wpływa na serwo
Serial.println(wartość); if(wartość 5) && (wartość 10) && (wartość 20) && (wartość 30) && (wartość 60)) { myservo1.write(losowo(0, 90)); myservo2.write(losowe(0, 90)); }
opóźnienie(180);
}