Arduino betriebene Projekt
Video:
(Hinweis: Wir haben die Töne über das eigentliche Video bearbeitet. Der Grund zu sein, die während der Aufnahme und Prüfung unserer Clips konnten wir nicht die eigentlichen Klänge hören während sie dort waren. Wenn wir das Video gerendert, konnte man die tatsächliche Klänge hören, die über Automaten, während wir dachten, dass sie von der Kamera aufgenommen wurden nicht aktiviert wurden. Also, das ist, warum Sie hören die Geräusche zweimal! Schien, dass die Kamera * haben * die Sounds aufzeichnen, nachdem alle! :) )
Benötigten Materialien;
-SRF10 oder Devantech SRF08 Ultraschall Ranger Finder
-Arduino Jumper Kabel (lange genug, sonst müsst Drähte Zusammenlöten)
-Tape
-Ein Automat!
-Einige Redner (oder benutzen Sie einfach Ihren Laptop, sound wiederzugeben)
Benötigten Werkzeuge;
-Arduino (+ Bearbeitung)
-Grundlegende Arduino & Verarbeitung wissen
-Chancen sind, müssen Sie zu löten, wenn Sie die Kabel nicht lang genug sind
-Sounds!
-Prozess;
1. zu aller erst finden Sie eine geeignete Stelle. Denken Sie daran, dass Sie Ihren Laptop, Ihr Arduino und schließlich Ihre Lautsprecher aus den Augen zu verstecken müssen.
2. du musst Platz/Ultraschall-Sensor so Stock, dass es eine Änderung der Daten auslösen werde, da Menschen am Automaten verwenden. Jetzt prüfen Sie, ob die Kabel lang genug von Ihrem Sensor an Ort und Stelle Sie sind Ihren Laptop, Arduino, verstecken werde etc.. Ist dies nicht der Fall, die Kabel zu löten, bis sie lang genug sind.
3. finden Sie die Geräusche, die Sie spielen, wenn Leute den Code durch den Sensor auslösen möchten. Mp3-Format ist am einfachsten zu bedienen. Fand die Geräusche, die Sie wollen? Eine neue Verarbeitung Skizze, speichern Sie die Skizze und fügen Sie Ihre Sounds in den entsprechenden Ordner. Verarbeitung in der rohen Codeabschnitt sichtbar. Ersetzen Sie die. MP3-Datei-Namen mit Ihrem MP3-Dateinamen. Schließlich, löschen Sie oder fügen Sie klingt wie Sie bitte.
4. kopieren und fügen Sie den Arduino Code und alles miteinander verbinden. Sehen Sie, wenn Sie Daten in Ihrer Verarbeitung von Arduino empfangen. Stellen Sie sicher, dass alles funktioniert! Funktioniert etwas nicht? Versuchen Sie und finden Sie Schritt für Schritt den Fehler zu. Erhält Ihre Verarbeitung keine Werte? Welche Werte? Machen Sie den Arduino Ihre Werte vor dem Schreiben Sie, etc. drucken.
(Die Chancen stehen gut Code hat ein wenig optimiert werden, die Dinge für Sie arbeiten!)
5. in Ordnung! Zeit zum Finetune. Beginnen Sie mit der Platzierung Ihrer Werkzeuge (Sensor, Arduino, Laptop, Lautsprecher), wo sie sein sollten. Vor kleben Sie die Drähte, etc.. Überprüfen (durch testen), welche Daten Sie erhalten, wenn Leute am Automaten benutzen. Optimieren Sie Ihren Code so, dass es auf die Änderung von Daten reagiert. Dies ist normalerweise der schwierige Teil!
6. Kleben Sie die Drähte verbergen alles, führen Sie den Code und genießen!
7. Programm stecken? Versuchen Sie Neustart Verarbeitung oder Zurücksetzen Ihres Arduino.
Roh-Code;
ARDUINO CODE--
I2C SRF10 oder Devantech SRF08 Ultraschall Ranger Finder Veranschaulicht die Verwendung der Drahtbibliothek Lesen von Daten aus der 29. April 2006 erstellt Dieser Beispielcode ist in der Public Domain. #include void setup() Int lesen = 0; void loop() ChangeAddress (OldAddress, NewAddress); while(1) {} } } Der folgende Code ändert sich die Adresse von einem Devantech Ultraschall-Entfernungsmesser (SRF10 oder SRF08) void ChangeAddress (Int OldAddress, Int NewAddress)
von Nicholas Zambetti
und James Tichenor
Devantech Utrasonic Rangers SFR08 und SFR10
{
Wire.Begin(); Join-i2c-Bus (optional für Master-Adresse)
Serial.Begin(9600); Starten Sie die serielle Kommunikation bei 9600 Bit/s
}
{
Int Daten = 0;
Int OldAddress = 0x70; I2C Gebruikt hat 7-Bit Addresses (de MSB) Dus 0xE0 Wordt 0x70
Int NewAddress = 0xE2; steht im Einklang mit Adresse 2--> 0xE4
Int NewAddress = 0x71; nur 7-Bit verwendet--> 0x72
Boolesche halten = False;
Daten = readData(newAddress);
{If(Data!=0)}
Serial.println(Data);
If(Data >100) {}
Serial.Write("e");
ElseIf (Daten < 90) {}
Serial.Write("f");
}
}
Else {}
Serial.Write("0");
}
Delay(100); noch ein bisschen warten Sie, da Menschen, die Ausgabe zu lesen
Delay(1000);
}
Verwendung: changeAddress(0x70, 0xE6);
{
Wire.beginTransmission(oldAddress);
Wire.Write(Byte(0X00));
Wire.Write(Byte(0xa0));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.Write(Byte(0X00));
Wire.Write(Byte(0xAA));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.Write(Byte(0X00));
Wire.Write(Byte(0xA5));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.Write(Byte(0X00));
Wire.Write(newAddress);
Wire.endTransmission();
}
Der folgende Code ist die Sensordaten lesen
Int ReadData (Int Adresse) {}
Int lesen = 0;
Schritt 1: weisen Sie Sensor Echos zu lesen
Wire.beginTransmission(address); übertragen Sie auf Gerät #112 (0x70)
die im Datenblatt angegebene Adresse ist 224 (0xE0)
aber i2c Adressierung nutzt die hohe 7 Bits, so dass es 112
Wire.Write(Byte(0X00)); Sets-Register-Zeiger auf Befehl Register (0 x 00)
Wire.Write(Byte(0x51)); Befehl-Sensor zur Messung in "Zentimeter" (0x51)
Verwenden Sie 0x50 für Zoll
Verwenden Sie 0x51 für Zentimeter
Verwenden Sie 0x52 für Ping Mikrosekunden
Wire.endTransmission(); Übertragung zu stoppen
Schritt 2: warten Sie Lesungen passieren
Delay(70); Datenblatt schlägt mindestens 65 Millisekunden
Schritt 3: anweisen, Sensor wieder ein besonderes Echo lesen
Wire.beginTransmission(address); übertragen Sie auf Gerät #112
Wire.Write(Byte(0x02)); Sets registrieren Zeiger um echo #1 Register (0x02)
Wire.endTransmission(); Übertragung zu stoppen
Schritt 4: Lesung von Sensor anfordern
Wire.requestFrom (Adresse, 2); 2 Byte vom Slave-Gerät #112 anfordern
Schritt 5: Lesung von Sensor erhalten
Wenn (2 < = Wire.available()) / / Wenn zwei Bytes empfangen wurden
{
Lesen = Wire.read(); high-Byte (überschreibt früheren Lesung) zu erhalten
lesen lesen = << 8; Schicht-high-Byte zu hohen 8 bits
Lesen | = Wire.read(); low-Byte als unteren 8 Bits erhalten
Lesen zurück;
}
Return 0;
}
VERARBEITUNGSCODE –
Import processing.serial.*; Minim Minim; Serielle MyPort; Int-R; void setup() {} println(Serial.List()); void SerialEvent (serielle MyPort) {} Int InByte = myPort.read(); println(inByte); Wenn (InByte == 102 & & Hand == False) {} für (Int ich = 0; ich < 9000; i ++) {} Wenn (R == 1) {} in5.Play(); void draw() {} void stop() super.Stop();
Import ddf.minim.*;
AudioPlayer in;
AudioPlayer in2;
AudioPlayer in3;
AudioPlayer in4;
AudioPlayer in5;
Boolesche Hand = False;
Größe (800, 600);
Minim = new Minim(this);
in = minim.loadFile("god.mp3");
IN2 = minim.loadFile("applaus.mp3");
in3 = minim.loadFile("babygelach.mp3");
IN4 = minim.loadFile("scheet.mp3");
in5 = minim.loadFile("muntje.mp3");
PortName String = Serial.list() [6];
MyPort = neue Seriennummer (diese, PortName, 9600);
Background(0);
R = 0;
}
Int R = Int (random(1, 4));
println(r);
Hand = True;
println(Hand);
// }
in.Play();
}
ElseIf (R == 2) {}
IN2.Play();
}
ElseIf (R == 3) {}
in3.Play();
}
ElseIf (R == 4) {}
IN4.Play();
}
Else {}
}
}
Wenn (InByte == 101) {}
Hand = False;
println(Hand);
}
}
}
{
in.Close();
minim.Stop();
}