Drumles

Toon hier Uw afgeronde projecten aan anderen.
Berichten: 2
Geregistreerd: 08 Sep 2018, 22:35

Drumles

Berichtdoor fgal » 08 Sep 2018, 22:52

Een doosje dat kan drummen. Kijk eerst maar:
https://www.youtube.com/watch?v=7jnyAMi8lj8

Aan electronica heb je niet veel nodig: een microfoontje, een servo motor en een ledje.
Mail maar als je de sketch wilt krijgen.

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Drumles

Berichtdoor Koepel » 09 Sep 2018, 10:11

Dat is grappig, hij kan het naspelen :D Mooi gedaan. Leuk om te zien.
Dus jouw doosje kan de eerste paar drumlessen al overslaan :lol:

Wil je de code niet zomaar openbaar maken? Dat kan hier of op Github.

Iets vergelijkbaars is dit: https://www.youtube.com/watch?v=f3Z1a47yvdQ, en de code daarvan staat hier: https://www.instructables.com/id/Knock-Back-A-Knock-Echoing-Arduino/.

Berichten: 2
Geregistreerd: 08 Sep 2018, 22:35

Re: Drumles

Berichtdoor fgal » 10 Sep 2018, 23:23

Hierbij de sketch. Moest nog even uitzoeken hoe ik die hier kon plaatsen.
Dank voor de link naar 'knock back'.
Code: Alles selecteren
/*
  Zie video https://youtu.be/7jnyAMi8lj8
  In deze versie wacht de arduino tot er 5 slagen zijn geweest en doet ze dan na.
  Je zou ook het aantal slagen open kunnen laten en de arduino een vaste tijd laten luisteren.
  Dan moet je de sketch wel helemaal herschrijven.
*/

#include <Servo.h>
Servo drumServo;
int aantalPiepjes = 0;//het aantal slagen/harde geluiden dat hij al gehoord heeft
int omhoog = 90;//drumstokje omhoog
int omlaag = 100;//drumstokje omlaag
unsigned long starttijden[5];
int ledPin = 13;
int sensorPin = 7;
boolean val = 0;


void setup() {
  Serial.begin(9600);
  drumServo.attach(9); 
  drumServo.write(omlaag);
  //delay(15);
  pinMode(ledPin, OUTPUT);
  pinMode(sensorPin, INPUT);
}

void loop() {
  val = digitalRead(sensorPin);
  if (val == HIGH) {  //boven de drempel
    digitalWrite(ledPin, HIGH);//LED gaat aan
    starttijden[aantalPiepjes] = millis();
    aantalPiepjes++;
    delay(200); //hij moet dat ene geluid maar 1 keer registreren
  }
  else {
    digitalWrite(ledPin, LOW);
  }
  if ((millis() - starttijden[0]) > 10000) {
    aantalPiepjes = 0;
  }
  if (aantalPiepjes == 5) {
    aantalPiepjes = 0;
    delay (1000);
    for (int i = 1; i < 5 ; i++) {
      drumServo.write(omlaag);
      delay(100);
      drumServo.write(omhoog);
      delay (starttijden[i] - starttijden[i - 1] - 100);
    }
    drumServo.write(omlaag);
    delay(100);
    drumServo.write(omhoog);
    delay(800); // want anders hoort hij de servo als eerste tik
  }
}

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten