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

Vending Priest

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

  1. Vending Priest

    Eine Servo drückt Arm nach oben und unten und der zweite Servo rechts und links.

Schritt 2: Erstellen Sie Automat Schalter

  1. Vending Priest

    Ich habe gerade verwendet einen Druckschalter Limitart in einem Kunststoffgefäß. Wenn Sie durch den Schlitz schieben Münze es drückt den Schalter.

Schritt 3: Draht-up-Boards, Schalter und Servos und Programm

  1. Vending Priest

    Vending Priest

    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); }