Schritt 4: Hochladen des Cigar Cutter-Quellcodes
Nun, da wir sicher sind, dass wir unser Steckbrett korrekt verdrahtet und alle Servos funktionieren, sind wir lädt Quellcode die Projekte. Im folgenden habe ich den Quellcode gezeigt und kommentiert seine Funktionen erklären.
/*******************************************************
Zweck: Light-A-Bull machen Kursprojekt
Erstellt von Karl Lewis
DATUM: 11/2014
*******************************************************/
/****************************************************************************************************************************
Hier verwende ich die #define-Funktion, um Pins auf dem Arduino eine erkennbare Variable zuordnen. Diese definieren Funktion machen eine leichtere Anerkennung dessen, was jede Funktion tut. Ohne diese alle Funktionen wäre aus der von Pin-Nummern, die weniger erkennbar ist, gelesen und benötigen gemeint ist, was an diesem Pin angeschlossen ist.
****************************************************************************************************************************/
#include //Includes die Servo-Bibliothek mit der Arduino IDE enthalten
Dies sind meine Servos
Servo, links, rechts, Transport; Links werden auf der linken Seite des Fräsers, rechts auf rechts, und Verkehr bewegt sich die Zigarre
#define SwitchPin 13 //this definieren Funktion wird mir erlauben, "SwitchPin" im Code statt 13 platzieren
#define DebounceTime 200
lange Zeit;
Int Lpos = 0; Definition von Ganzzahlen mit den Servos verwendet werden
Int Rpos = 55;
Int cpos = 0;
void setup() {}
left.Attach(5); die linke Servo wird von Pin 5 kontrolliert werden
right.Attach(6); das richtige Servo wird von Pin 6 kontrolliert werden.
Transport.Attach(3); Pin 3 wird das Servo bewegt die Zigarre gesteuert werden
PinMode (SwitchPin, Eingabe); Dies wird die SwitchPin als Eingabe einrichten
}
void loop() {}
left.Write(LPOS); Damit wird das linke Servo Winkel der Ganzzahl Lpos gleich
right.Write(RPOs); Ebenso entspricht das einem ganzzahligen rpos
Transport.Write(CPOs); und dies wird die Ganzzahl cpos
Wenn (readSwitch(debounceTime) == True) {//If Schleife beginnt die Geräte-Funktionen beim Eingang LOW liest
Delay(1000);
Zuerst öffnen wir den Cigar Cutter mithilfe einer Funktion
Ich war nicht in der Lage, eine clevere Methode, um beide Servos gleichzeitig zu verschieben, so dass ich auf halbem Weg bewegen sich einfallen
mit jeder und dann die andere Hälfte.
für (Lpos = 0; Lpos < = 30; Lpos += 1) {//half der linken Bewegung
left.Write(LPOS);
Delay(15);
}
für (Rpos = 55; Rpos > = 25; Rpos-= 1) {//half der linken Bewegung
right.Write(RPOs);
Delay(15);
}
Zweite Hälfte des Satzes
für (Lpos = 30; Lpos < = 65; Lpos += 1) {//secong die Hälfte der linken Bewegung
left.Write(LPOS);
Delay(15);
}
für (Rpos = 25; Rpos > = 0; Rpos-= 1) {//second Hälfte der rechten Bewegung
right.Write(RPOs);
Delay(15);
}
Delay(2000);
Jetzt sind wir Transport die Zigarre in Position zu schneiden
für (cpos = 0; cpos < = 90; cpos += 1) {}
Transport.Write(CPOs);
Delay(15);
}
Dies wird nun die Zigarre mit der linken und rechten Servos schneiden.
für (Lpos = 65; Lpos > = 30; Lpos = 1) {//First die Hälfte der linken Seite
left.Write(LPOS);
Delay(15);
}
für (Rpos = 0; Rpos < = 25; Rpos += 1) {//First Hälfte rechts
right.Write(RPOs);
Delay(15);
}
Zweite Hälfte des Satzes
für (Lpos = 30; Lpos > = 0; Lpos = 1) {//Second die Hälfte der linken Seite
left.Write(LPOS);
Delay(15);
}
für (Rpos = 25; Rpos < = 55; Rpos += 1) {//Second Hälfte rechts
right.Write(RPOs);
Delay(15);
}
Delay(2000);
Jetzt wird die Zigarre in die Ausgangsposition zurück.
für (cpos = 90; cpos > = 0; cpos-=1) {}
Transport.Write(CPOs);
Delay(15);
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Neue Registerkarte Funktionen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/****************************************************************************************************************************
Dieser Teil dient zum Lesen meiner Eingangsschalter (Capacative Touch) um den Kreislauf zu aktivieren. Ich fand, dass das Touchpad identisch mit einem mechanischen input Switch betreibt, so ließ ich dabei Entprellung auf diesen Eingang.
****************************************************************************************************************************/
Byte-ReadSwitch (lange Entprellung) {//The Entprellung Variable definiert auf Hauptseite
statische lange LastTime; Neue Variable LastTime genannt, repräsentiert es das letzte Mal war der Schalter aktiv
statische Byte PreviousState; Neue Variable namens PreviousState stellt den vorherigen Zustand des Eingangs
Byte CurrentState = digitalRead(switchPin); Neue Variable CurrentState die verwenden eine digitale Lesen der Eingabe
Wenn (CurrentState == LOW & & PreviousState == HIGH & & Millis ()-LastTime > Entprellen) {//If meine eingangs-Pin nur von hoch zu niedrig ging und die schon länger als die Prellzeit dann
lastTime=millis(); Dies setzt LastTime zum letzten Mal und setzt die Entprellung Timer PreviousState = LOW; Set PreviousState zu niedrig
Return(true); True oder 1 Eingabe bedeutet Rückkehr ist in der Tat aufgetreten. Diese zurückgegeben, "wahrer" Wert dient zur Aktivierung der If Anweisung auf der vorherigen Seite
}
Else {//If "If"-Anweisung nicht wurde erfüllt, es werden die Aufgaben in der 'else'-Anweisung
Hinweis: "{elseif()} erstellen Sie eine sekundäre If Anweisung Vorform mit 'else' es wird / / wenn nicht die"If".
PreviousState = hoch; Legen Sie die PreviousState auf hoch
Return(false); "False" zurück, die anzeigt, dass der Schalter nicht gedrückt wurde
}
}