Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino MP3-Player + Distanzsensor =SPASS

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Serieller Arduino-MP3-Player von Catalex
Sie benötigen auch eine SD-Karte und einen SD-Kartensteckplatz (groß bis klein) für den PC
× 1
Ultraschallsensor - HC-SR04 (Generic)
× 2
einige Lautsprecher mit MP3-Klinkeneingang
× 1

Über dieses Projekt

So verwenden Sie den seriellen MP3-Player von CATALEX

Mein vorheriges Tutorial dazu, nur eine Bibliothek benötigt (#include ) und einige einfache Funktionen, die bereits im vorherigen Tutorial erklärt wurden:

void sendCommand(int8_t command, int16_t dat) { if (command==CMD_PLAY_WITHFOLDER or command==CMD_PLAY_WITHVOLUME){Serial.print("PLAYING SONG, LEICHT BEWEGEN SIE IHREN KOPF FÜR GROSSEN EFFEKT");} delay( 20); Send_buf[0] =0x7e; //Startbyte Send_buf[1] =0xff; //Version Send_buf[2] =0x06; //die Anzahl der Bytes des Befehls ohne Startbyte und Endbyte Send_buf[3] =Befehl; // Send_buf[4] =0x00;//0x00 =keine Rückmeldung, 0x01 =Rückmeldung Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //Daten Send_buf[7] =0xef; // Endbyte für (uint8_t i=0; i<8; i++) // {mySerial.write (Send_buf[i]); // Bit an serielles mp3 senden} Serial.println(); }  

So verwenden Sie den Ultraschallbereich HC-SR04

Mein vorheriges Tutorial dazu, keine Bibliothek erforderlich, trotzdem einfach zu bedienen. Ich habe gerade meinen vorherigen hc-sr04-Beitrag genommen und in diese Funktion eingefügt:

long measureDistance(){ lange Dauer, Distanz; digitalWrite (trigPin, LOW); //PULSE ___|---|___ delayMicroseconds(2); digitalWrite (trigPin, HOCH); VerzögerungMikrosekunden(10); digitalWrite (trigPin, LOW); Dauer =pulseIn(echoPin, HIGH); Distanz =(Dauer/2) / 29,1; Serial.println("Abstand:"); Serial.println (Entfernung); Rückweg; // gibt den Abstand in cm zurück}  

So verwenden Sie beide Version 1:Einfacher mp3-Entfernungstrigger

Installieren Sie zuerst die Bibliothek, falls Sie sie noch nicht haben ().

Wenn in dieser Codeversion etwas näher als 50 cm kommt, wird das MP3-Audio ausgelöst. Ich habe es benutzt, um meine Mitbewohner mit einem sehr lauten "Überraschungs-Motherfucker"-Clip zu erschrecken.

Hinweis: Vollständige .ino Code befindet sich in den Projektanhängen unten.

void loop() { if(measureDistance()<50){ sendCommand(CMD_PLAY_WITHFOLDER, 0X0203); // den dritten Song des zweiten Ordners abspielen delay(1000); // warten, um Fehler zu vermeiden } delay (300); }  

So verwenden Sie sowohl Version 2 als auch Disturbance mp3-Entfernungstrigger

Diese Version kümmert sich nicht um die Entfernung, erkennt nur Unterschiede zwischen den Messwerten. Wenn plötzlich durch einen Fehler ausgelöst wird, geben Sie einen höheren Wert in if(gap> 20){....... . ein wir müssen neue Variablen außerhalb der Schleife deklarieren. Ich habe es am Anfang des Codes gemacht.

int firstTime=0; // wir müssen firstTime außerhalb der Schleife deklarieren long Distance,auxDistance,gap=0; void loop() { Distance=measureDistance(trigPin,echoPin); // Distanz messen und Lücke speichern =abs(Distance-auxDistance); // berechne die Differenz zwischen jetzt und letztem Messwert if (firstTime==0) {//necesary aus Stabilitätsgründen auxDistance=Distance; Lücke =0; // macht es nur das erste Mal nach dem Abspielen eines Songs, um eine Fehlfunktion der ersten Schleife zu vermeiden firstTime++; Verzögerung (1000); } if(gap>
20){//wenn die Distanzabweichung 20cm beträgt sendCommand(CMD_PLAY_WITHFOLDER, 0X0201); // den ersten Song des zweiten Ordners abspielen firstTime=0; // Fehler vermeiden!! Wir mögen keine Fehler Verzögerung (2000); } Serial.print ("New Distace:"); // debugggggg Serial.print (Distance); Serial.print ( "Alter Abstand:"); Serial.print (auxDistance); Serial.println (Lücke); Verzögerung (300); auxDistance=Distance; // den Wert für if() in der nächsten Schleife speichern }  

So verwenden Sie beide Version 3:Zwei Distanzsensoren

Mit zwei Distanzsensoren können Sie die Bewegungsrichtung tatsächlich erraten Also habe ich ein Programm gemacht, das sagt "hallo " oder "Tschüss " abhängig von der Bewegungsrichtung der Person.

  • Zuerst definieren wir zwei weitere DIGITAL-Pins zur Steuerung des zweiten HC-SR04:
#define trigPin 13//für das ERSTE Distanzmodul #define echoPin 12 #define trigPin2 10//für das ZWEITE Distanzmodul #define echoPin2 9 
  • Neue Variablen! Ja!
lange Distanz,auxDistance,gap=0; lange Distanz2,auxDistance2,gap2=0; //neue Variablen 
  • Im setup() wir fügen unsere neue Pin-Deklaration hinzu.
pinMode(trigPin, AUSGANG); pinMode (echoPin, EINGANG); pinMode (trigPin2, AUSGANG); pinMode (echoPin2, EINGANG);  
  • Wir ändern die measureDistance() Funktion, jetzt liest die Funktion die Pins aus den Argumenten.
long measureDistance(int trigger,int echo){ lange Dauer, Distanz; digitalWrite (Trigger, LOW); //PULSE ___|---|___ delayMicroseconds(2); digitalWrite (Auslöser, HIGH); VerzögerungMikrosekunden(10); digitalWrite (Trigger, LOW); Dauer =pulseIn(Echo, HIGH); Distanz =(Dauer/2) / 29,1; Serial.println("Abstand:"); Serial.println (Entfernung); Rückweg; }  
  • In unserer Schleife():
void loop() { Distance=measureDistance(trigPin,echoPin);//distanz1 messen und Distance2 speichern=measureDistance(trigPin2,echoPin2);//distanz2 messen und gap=abs(Distance-auxDistance) speichern; // berechne die Differenz zwischen jetzt und letztem Lesen gap2=abs(Distance2-auxDistance2); // berechne die Differenz zwischen jetzt und letzter Lesung if(firstTime==0){//notwendig für Stabilitätsdinge auxDistance=Distance; auxDistance2=Distanz2; Lücke =0; Lücke2=0; // macht es nur das erste Mal nach dem Abspielen eines Songs, um eine Fehlfunktion der ersten Schleife zu vermeiden firstTime++; Verzögerung (2000); } if(gap>
20 and gap2<20){//wenn die Distanzabweichung 20cm beträgt sendCommand(CMD_PLAY_WITHFOLDER, 0X0201); // den ersten Song des zweiten Ordners abspielen firstTime=0; // Fehler vermeiden!! Serial.println ("RECHTE BEWEGUNG ERKANNT"); Verzögerung (2000); } if(gap2>20 and gap<20){//wenn die Distanzabweichung 20cm beträgt sendCommand(CMD_PLAY_WITHFOLDER, 0X0202); // den zweiten Song des zweiten Ordners abspielen firstTime=0; // Fehler vermeiden!! Wir mögen keine Fehler Serial.println ("LINKE BEWEGUNG ERKANNT"); Verzögerung (2000); } Serial.println("\\\\\\\\\\\\\\\\\\\\\\"); //debugggggg Serial.print("New Distace:"); //debugggggg Serial. drucken (Entfernung); Serial.print ( "Alter Abstand:"); Serial.print (auxDistance); Serial.print ( " GAP "); Serial.println (Lücke); Serial.print ("New Distace2:"); // debugggggg Serial.print (Distance); Serial.print ( "Alter Abstand 2:"); Serial.print (auxDistance); Serial.print ( " GAP2 "); Serial.println (Lücke); Serial.println ("\\\\\\\\\\\\\\\\\\\\\\"); // debugggggg Verzögerung (300); auxDistance=Distance;//speichere den Wert für if() in der nächsten Schleife auxDistance2=Distance2;//speichere den Wert für if() in der nächsten Schleife } Disturbance2=0;left=0;right=0;delay (1000); // warten, um Fehler zu vermeiden} delay (300); auxDistance=Distance;//speichere den Wert für if() in der nächsten SchleifeauxDistance2=Distance2;//speichere den Wert für if() in der nächsten Schleife}  

Viel Spaß beim Hacken, Leute!

Code

  • Version 1, Einfacher MP3-Entfernungstrigger
  • Version 2,Störungs-MP3-Entfernungstrigger
  • VERSION 3, MIT ZWEI SENSOREN, RICHTUNGSERKENNUNG
Version 1, Einfacher MP3-EntfernungstriggerArduino
Wenn in dieser Codeversion etwas näher als 50 cm kommt, wird das MP3-Audio ausgelöst. Ich habe es benutzt, um meine Mitbewohner mit einem sehr lauten "Überraschungs-Motherfucker"-Clip zu erschrecken.
//code neu arrangiert von Javier Muñoz 10/11/2016 frag mich unter [email protected]#include #define ARDUINO_RX 5//sollte mit TX des seriellen MP3-Player-Moduls verbinden#define ARDUINO_TX 6//verbinden mit RX des Moduls#define trigPin 13//für das Distanzmodul#define echoPin 12SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//init the serielles Protokoll, sagen Sie myserial, welche Pins TX und RX sind //////////////////////////////////// ////////////////////////////////////////////////all die im Datenblatt benötigte Befehle(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//Der MP3-Player versteht Bestellungen in einer 8 int-Zeichenfolge //0X7E FF 06 Befehl 00 00 00 EF;(wenn Befehl =01 nächste Songreihenfolge) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATEN WERDEN ERFORDERLICH (Nummer des Songs)#define VOLUME_UP_ONE 0X04#define VOLUME_D OWN_ONE 0X05#define CMD_SET_VOLUME 0X06//DATA IS REQUIRED (Anzahl der Volumes von 0 bis 30(0x1E))#define SET_DAC 0X17#define CMD_PLAY_WITHVOLUME 0X22 //Daten werden benötigt 0x7E 06 22 00 xx yy EF;(xx Volume)( yy Nummer des Songs)#define CMD_SEL_DEV 0X09 //SPEICHERGERÄT WÄHLEN, DATEN SIND ERFORDERLICH #define DEV_TF 0X02 //HALLO,IM DATEN ERFORDERLICH #define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0B#define CMD_RESET0MDRESET //WIEDERGABE FORTSETZEN#define CMD_PAUSE 0X0E //WIEDERGABE IST PAUSED#define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(spielen Sie den Song mit dem Verzeichnis \01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17// Daten werden benötigt 0x7E 06 17 00 01 XX EF;(Spiel den Ordner 01 ab)(Wert xx ist uns egal)#define SET_CYCLEPLAY 0X19//Daten werden benötigt 00 start; 01 close#define SET_DAC 0X17//Daten werden benötigt 00 start DAC OUTPUT;01 DAC keine Ausgabe////////////////////////////// //////////////////////////////////////////////// ////void setup () { Serial.begin (9600); // Starten Sie unsere seriellen Coms für den seriellen Monitor in unserem pcmySerial.begin (9600); // Starten Sie unsere Serial Coms für DAS MP3delay (500); // Warten Sie Chip-Initialisierung ist abgeschlossen sendCommand (CMD_SEL_DEV, DEV_TF); // TF-Kartenverzögerung auswählen (200); // auf 200 mspinMode warten (trigPin, OUTPUT); pinMode (echoPin, INPUT);}void loop () { if (measureDistance ( trigPin,echoPin)<50){sendCommand(CMD_PLAY_WITHFOLDER, 0X0203);//den dritten Song des zweiten Ordners abspielendelay(1000);//warten, um Fehler zu vermeiden}delay(300);}void sendCommand(int8_t command, int16_t dat ) { Verzögerung (20); Send_buf[0] =0x7e; //Startbyte Send_buf[1] =0xff; //Version Send_buf[2] =0x06; //die Anzahl der Bytes des Befehls ohne Startbyte und Endbyte Send_buf[3] =Befehl; // Send_buf[4] =0x00;//0x00 =keine Rückmeldung, 0x01 =Rückmeldung Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //Daten Send_buf[7] =0xef; // Endbyte für (uint8_t i=0; i<8; i++) // {mySerial.write (Send_buf[i]); // Bit an serielles mp3 senden Serial.print (Send_buf[i],HEX);/ / Bit an seriellen Monitor im PC senden} Serial.println ();} lange messenDistance (int trigger,int echo) { lange Dauer, Distanz; digitalWrite (Trigger, LOW); //PULSE ___|---|___ delayMicroseconds(2); digitalWrite (Auslöser, HIGH); VerzögerungMikrosekunden(10); digitalWrite (Trigger, LOW); Dauer =pulseIn(Echo, HIGH); Distanz =(Dauer/2) / 29,1; Serial.println("Abstand:"); Serial.println (Entfernung); Rückweg;}
Version 2,Störungs-MP3-EntfernungsauslöserArduino
Diese Version kümmert sich nicht um die Entfernung, erkennt nur Unterschiede zwischen den Messwerten.
//code neu angeordnet von Javier Muñoz 10/11/2016 fragen Sie mich unter [email protected]#include #define ARDUINO_RX 5// sollte sich mit TX des seriellen MP3-Player-Moduls verbinden#define ARDUINO_TX 6//Connect to RX des Moduls#define trigPin 13//für das Distanzmodul#define echoPin 12SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//init das serielle Protokoll, Myserial mitteilen, welche Pins TX und RX sind /////////////////////////////////////// //////////////////////////////////////////// alle benötigten Befehle in das Datenblatt(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//Der MP3-Player versteht Bestellungen in einer 8 int Zeichenfolge //0X7E FF 06 Befehl 00 00 00 EF;(wenn Befehl =01 nächste Songreihenfolge) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATEN SIND ERFORDERLICH (Nummer des Songs)#define VOLUME_UP_ONE 0X04#define VOLUME_DOWN_ONE 0X05#define CMD_SET_VOLUME 0X06//DATA IS REQUIRED (Anzahl der Volumes von 0 bis 30(0x1E))#define SET_DAC 0X17#define CMD_PLAY_WITHVOLUME 0X22 //Daten werden benötigt 0x7E 06 22 00 xx yy EF;(xx Volume) yy Nummer des Songs)#define CMD_SEL_DEV 0X09 //SPEICHERGERÄT WÄHLEN, DATEN SIND ERFORDERLICH #define DEV_TF 0X02 //HALLO,IM DATEN ERFORDERLICH #define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0B#define CMD_RESET0MDRESET //WIEDERGABE FORTSETZEN#define CMD_PAUSE 0X0E //WIEDERGABE IST PAUSED#define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(spielen Sie den Song mit dem Verzeichnis \01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17// Daten werden benötigt 0x7E 06 17 00 01 XX EF;(Spiel den Ordner 01 ab)(Wert xx ist uns egal)#define SET_CYCLEPLAY 0X19//Daten werden benötigt 00 start; 01 close#define SET_DAC 0X17//Daten werden benötigt 00 start DAC OUTPUT;01 DAC keine Ausgabe////////////////////////////// //////////////////////////////////////////////// ////int firstTime=0;//wir müssen firstTime außerhalb der Schleife deklarieren long Distance,auxDistance,gap=0;void setup () { Serial.begin (9600); // Starten Sie unsere Serial coms für den seriellen Monitor in our pcmySerial.begin (9600); // Starten Sie unsere seriellen Coms für DIE MP3-Verzögerung (500); // Warten Sie, bis die Initialisierung des Chips abgeschlossen ist sendCommand (CMD_SEL_DEV, DEV_TF); // Wählen Sie die TF-Kartenverzögerung (200); // warten Sie auf 200mspinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);}void loop() { Distance=measureDistance(trigPin,echoPin);// Distanz messen und storegap=abs(Distance-auxDistance);// die Differenz zwischen jetzt berechnen und letztes Lesenif(firstTime==0){//notwendig für Stabilität ThingsauxDistance=Distance;gap=0; // tut es nur das erste Mal nach dem Abspielen eines Songs, um die erste Schleife malfuntcionfirstTime++ zu vermeiden; delay(1000);} if(gap>
20){//wenn die Abstandsvariation 20cmsendCommand(CMD_PLAY_WITHFOLDER, 0X0201) ist;//spielen Sie den ersten Song des zweiten Ordners firstTime=0;//Fehler vermeiden!!wir mögen keine Fehlerverzögerung (2000); } Serial.print ("New Distace:"); // debuggggggSerial.print (Distance); Serial.print ( " Old Distance:");; auxDistance=Distance; // den Wert für if() in der nächsten Schleife speichern} void sendCommand(int8_t command, int16_t dat){ if (command==CMD_PLAY_WITHFOLDER or command==CMD_PLAY_WITHVOLUME){Serial.print("PLAYING SONG, BEWEGEN SIE IHREN KOPF LEICHT FÜR GROSSEN EFFEKT");} delay(20); Send_buf[0] =0x7e; //Startbyte Send_buf[1] =0xff; //Version Send_buf[2] =0x06; //die Anzahl der Bytes des Befehls ohne Startbyte und Endbyte Send_buf[3] =Befehl; // Send_buf[4] =0x00;//0x00 =keine Rückmeldung, 0x01 =Rückmeldung Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //Daten Send_buf[7] =0xef; // Endbyte for(uint8_t i=0; i<8; i++) // { mySerial.write (Send_buf[i]); // Bit an serielle mp3 senden } Serial.println ();} long measureDistance (int trigger ,int echo){ lange Dauer, Entfernung; digitalWrite (Trigger, LOW); //PULSE ___|---|___ delayMicroseconds(2); digitalWrite (Auslöser, HIGH); VerzögerungMikrosekunden(10); digitalWrite (Trigger, LOW); Dauer =pulseIn(Echo, HIGH); Entfernung =(Dauer/2) / 29,1; // Serial.println ("Abstand:"); // Serial.println (Abstand); Rückweg;}
VERSION 3, MIT ZWEI SENSOREN, RICHTUNGSERKENNUNGArduino
Jetzt mit zwei Distanzsensoren
//code neu arrangiert von Javier Muñoz 11.10.2016 fragen Sie mich unter [email protected]#include #define ARDUINO_RX 5//sollte eine Verbindung zum TX des seriellen MP3-Players herstellen module#define ARDUINO_TX 6//mit RX des Moduls verbinden#define trigPin 13//für das ERSTE Distanzmodul #define echoPin 12 #define trigPin2 10//für das ZWEITE Distanzmodul #define echoPin2 9#define trigPin 13//für das Distanzmodul #define echoPin 12SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX); // Init das serielle Protokoll, sag myserial welche Pins TX und RX sind /////////////////// //////////////////////////////////////////////// ////////////////alle benötigten Befehle im Datenblatt(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//Der MP3-Player versteht Befehle in einem 8 int String //0X7E FF 06 command 00 00 00 EF;(if command =01 next song order) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY _W_INDEX 0X03 //DATA IS REQUIRED (Anzahl der Songs)#define VOLUME_UP_ONE 0X04#define VOLUME_DOWN_ONE 0X05#define CMD_SET_VOLUME 0X06//DATA IS REQUIRED (Anzahl der Volumes von 0 bis 30(0x1E))#define SET_DAC 0X17#define SET_DAC 0X17#define //Daten werden benötigt 0x7E 06 22 00 xx yy EF;(xx volume)(yy number of song)#define CMD_SEL_DEV 0X09 //SPEICHERGERÄT AUSWÄHLEN, DATEN ERFORDERLICH #define DEV_TF 0X02 //HALLO,IM DATEN ERFORDERLICH #define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0B#define CMD_RESET 0X0C//CHIP RESET#define CMD_PLAY 0X0D //WIEDERGABE FORTSETZEN#define CMD_PAUSE 0X0E //WIEDERGABE IST PAUSED#define CMD_ER 0_0FEED/E0; Spiel den Song mit dem Verzeichnis \01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17// Daten werden benötigt 0x7E 06 17 00 01 XX EF;(Spiele den 01 Ordner)(Wert xx ist uns egal)#define SET_CYCLEPLAY 0X19 //Daten werden benötigt 00 start; 01 close#define SET_DAC 0X17//Daten werden benötigt 00 start DAC OUTPUT;01 DAC keine Ausgabe////////////////////////////// //////////////////////////////////////////////// ////int firstTime=0;//wir müssen firstTime außerhalb der Schleife deklarieren long Distance,auxDistance,gap=0;long Distance2,auxDistance2,gap2=0;void setup () { Serial.begin (9600);/ /Starten Sie unsere seriellen Coms für den seriellen Monitor in unserem pcmySerial.begin(9600); //Starten Sie unsere seriellen Coms für THE MP3delay(500);//Warten Sie, dass die Chipinitialisierung abgeschlossen ist sendCommand(CMD_SEL_DEV, DEV_TF);//wählen Sie die TF-Karte Verzögerung (200); // auf 200mspinMode warten (trigPin, OUTPUT); pinMode (echoPin, EINGANG); pinMode (trigPin2, AUSGANG); pinMode (echoPin2, EINGANG); }void loop() { Distance=measureDistance(trigPin,echoPin); //messe Distance1 und storeDistance2=measureDistance(trigPin2,echoPin2);//messe Distance2 und storegap=abs(Distance-auxDistance);// berechne die Differenz zwischen jetzt and last readinggap2=abs(Distance2-auxDistance2);// berechne die Differenz zwischen jetzt und letzter Lesungif(firstTime==0){//notwendig für Stabilität ThingsauxDistance=Distance;auxDistance2=Distance2;gap=0;gap2=0;/ / macht es nur das erste Mal nach dem Abspielen eines Songs, um die erste Schleife malfutcionfirstTime++ zu vermeiden; delay(2000);} if(gap>
20 and gap2<20){//wenn die Distanzabweichung 20cm beträgtsendCommand(CMD_PLAY_WITHFOLDER, 0X0201); // den ersten Song des zweiten Ordners abspielen firstTime=0; // Fehler vermeiden!! wir mögen keine FehlerSerial.println("RECHTE BEWEGUNG GEFUNDEN");delay(2000); } if(gap2>20 and gap<20){//wenn die Abstandsvariation 20cm istsendCommand(CMD_PLAY_WITHFOLDER, 0X0202); // den zweiten Song des zweiten Ordners abspielen firstTime=0; // Fehler vermeiden!!wir mögen keine FehlerSerial. println("LINKE BEWEGUNG ERKANNT");delay(2000); } Serial.println("\\\\\\\\\\\\\\\\\\\\\\");//debuggggggSerial.print("New Distace:");//debuggggggSerial.print( Distance);Serial.print(" Old Distance:");Serial.print(auxDistance);Serial.print(" GAP ");Serial.println(gap);Serial.print("New Distace2:");// debuggggggSerial.print(Distance);Serial.print(" Old Distance2:");Serial.print(auxDistance);Serial.print(" GAP2 ");Serial.println(gap);Serial.println("\\\\ \\\\\\\\\\\\\\\\\\");//debuggggggdelay(300); auxDistance=Distance;//speichere den Wert für if() in der nächsten SchleifeauxDistance2=Distance2;//speichere den Wert für if() in der nächsten Schleife} void sendCommand(int8_t command, int16_t dat){ if (command==CMD_PLAY_WITHFOLDER oder command==CMD_PLAY_WITHVOLUME){Serial.print("PLAYING SONG, LEICHT BEWEGEN SIE IHREN KOPF FÜR GROSSEN EFFEKT");} delay(20); Send_buf[0] =0x7e; //Startbyte Send_buf[1] =0xff; //Version Send_buf[2] =0x06; //die Anzahl der Bytes des Befehls ohne Startbyte und Endbyte Send_buf[3] =Befehl; // Send_buf[4] =0x00;//0x00 =keine Rückmeldung, 0x01 =Rückmeldung Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //Daten Send_buf[7] =0xef; // Endbyte for(uint8_t i=0; i<8; i++) // { mySerial.write (Send_buf[i]); // Bit an serielle mp3 senden } Serial.println ();} long measureDistance (int trigger ,int echo){ lange Dauer, Entfernung; digitalWrite (Trigger, LOW); //PULSE ___|---|___ delayMicroseconds(2); digitalWrite (Auslöser, HIGH); VerzögerungMikrosekunden(10); digitalWrite (Trigger, LOW); Dauer =pulseIn(Echo, HIGH); Entfernung =(Dauer/2) / 29,1; // Serial.println ("Abstand:"); // Serial.println (Abstand); Rückweg;}

Schaltpläne

NUR EIN DISTANZSENSOR ZWEI DISTANZSENSOREN, fügen Sie einfach einen weiteren an den Pins hinzu 10,9

Herstellungsprozess

  1. Aufbau eines drahtlosen Sensornetzwerks in Ihrem Zuhause
  2. CO2-Überwachung mit K30-Sensor
  3. Wie groß bist du?
  4. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  5. Audio in Arduino abspielen
  6. Arduino - Webbasierter MP3-Player
  7. Arduino Cloud Sensor Tower
  8. Bewegungssensor-Wasserpistole
  9. Arduino - Temperatur über eine serielle Schnittstelle an das Web senden
  10. Mini-Radar mit Arduino