Vending Priest
3 Schritt:Schritt 1: Zwei Servos arm zu betreiben Schritt 2: Erstellen Sie Automat Schalter Schritt 3: Draht-up-Boards, Schalter und Servos und Programm
Machte diese Verkaufs Priester mit Arduino Uno, ISD1820 Tonaufnahme Modul, Angelrute Bereichen, und auf beiden Servos.
Verwendet einen Endschalter innen Kunststoffgefäß, um das Geld zu nehmen. Nicht wirklich erwarten, dass jemand wollen, um zu machen, sondern wird auch schema zu zeigen, wie Schalter aktiviert Servo Routine und Soundkarte.
Schritt 1: Zwei Servos arm zu betreiben
Schritt 2: Erstellen Sie Automat Schalter
Schritt 3: Draht-up-Boards, Schalter und Servos und Programm
-
Schematische zeigt, wie elektrische Komponenten zu verbinden.
(Whoops! Der 1k Widerstand sollte auf dem Boden Seite des Schalters zu gehen, nicht auf der Signalseite.)
Hier ist der Code:
# include servo.h
Servo Servo1, SERVO2, Servo3; // Int potPin = 2; // Markieren Sie den Eingabestift für das Potentiometer int servangle = 0; // Servowinkelgröße int potPin = 4; // Markieren Sie den Eingabestift für das Potentiometer int soundPin = 4; // Markieren Sie den Eingabestift für das Potentiometer int ledPin = 13; // Die PIN für die LED int val = 0 zu wählen; // Variable, um den Wert aus dem Sensor int valPot2 = 0 zu speichern;
int valInc = 4; int currAngle = 0; int newAngle = 0; int Delaytime = 0; // Analogen Lesestifte const int buttonPin = 2; int Buttonstate = 0; // Variable zum Lesen der Drucktaste Status nichtig myServo (int curAngle, int newAngle, int angleInc, int incDelay, int servoNum) {if (curAngle <newAngle) {for (int Winkel = curAngle; Winkel <newAngle; Winkel + = angleInc) {if (servoNum == 1) servo1.write (Winkel); if (servoNum == 2) servo2.write (Winkel); Verzögerung (incDelay); }} Else if (curAngle> newAngle) {for (int Winkel = curAngle; Winkel> newAngle; Winkel - = angleInc) {if (servoNum == 1) servo1.write (Winkel); if (servoNum == 2) servo2.write (Winkel); Verzögerung (incDelay); }}}
Leere setup () {Serial.begin (9600); pinMode (ledPin, OUTPUT); // Erklären ledPin als Ausgang // pinMode (buttonPin, INPUT); pinMode (buttonPin, INPUT); pinMode (soundPin, OUTPUT); servo1.attach (9); Verzögerung (10); myServo (90,75,1,10,1); servo2.attach (11); Verzögerung (10); myServo (90,90,1,10,2); Verzögerung (2000); }
nichtig signOftheCross () {digital (soundPin, HIGH); Verzögerung (2000); digital (soundPin, LOW); // MyServo (50,75,1,15,1); myServo (90,75,1,10,1); Verzögerung (500); myServo (90,120,1,15,2); Verzögerung (1000); myServo (120,70,1,15,2); Verzögerung (1000); myServo (70,90,1,15,2); // Verzögerung (500); myServo (80,40,1,15,1); Verzögerung (100); myServo (50,105,1,15,1); } Void loop () {//Serial.print ("buttonpin ="); Serial.println (digitalRead (buttonPin)); val = 1000; Serial.print ("delay val ="); Ser Button = digitalRead (buttonPin);
if (Button == HIGH) {// LED einzuschalten: digital (ledPin, HIGH); Verzögerung (3000); signOftheCross (); Verzögerung (1000); } Else {// LED aus: digital (ledPin, LOW); }
// Cli (); // Verzögerung (5000); }