DIY tid förflutit dolly (12 / 16 steg)
Steg 12: Knyta den upp allt
Den slutliga Schematisk och kod.
flyktiga int en = 1000; tid för vilken motor drar
flyktiga int b = 5000; fördröjning mellan skott = cykeltid;
flyktiga int valb = 0;
flyktiga int vala = 0;
int ledde = 1;
int pin = 2; Detta är också ansluten till våra "stop"-knappen. Detta utlöser en intrrupt som kan stoppa Dollyn även när det är mellan en cykel.
int x = 3; motorn förarens riktning kontroll
int y = 4; motorn förarens riktning kontroll
int aktiverar = 5; motorn förarens aktivera pin
int kamera = 6; transistor
int bakgrundsbelysning = 13. LED bakgrundsbelysning
dessa gå till våra knappar
int å = A3;
int av = A2;
int pull = A1;
int push = A0;
går till krukor
int va = A4;
int vb = A5;
variabler som används i koden
int läge = 4;
int disp = 4;
#include < LiquidCrystal.h >
LiquidCrystal lcd (7, 8, 9, 10, 11, 12); stift 7-12 där vi har anslutit lcd
void setup() {
pinMode (tryck, indata);
pinMode (på, indata);
pinMode (av, ingång);
pinMode (dra, indata);
pinMode ledde (, OUTPUT);
pinMode (bakgrundsbelysning, OUTPUT);
för (int jag = 3; jag < = 6; i ++)
{pinMode (i, matas);}
LCD.BEGIN (16, 2); initiliaze 16 x 2 lcd
Detta är också ansluten till vår intrrupt funktion. Detta utlöser en intrrupt när du trycker på stopp-knappen. Detta kan stoppa Dollyn även när det är mellan en cykel.
attachInterrupt(digitalPinToInterrupt(pin), offint, RISING);
}
void offint()
{
om (läge == 1)
{
LCD.display();
LCD.Clear();
digitalWrite (bakgrundsbelysning, hög);
LCD.Print("stopped");
}
Disp = 0;
läge = 4;
digitalWrite (bakgrundsbelysning, hög);
digitalWrite (x, låg);
digitalWrite (y, låg)
digitalWrite (aktivera, låg);
digitalWrite (ledde, låg);
digitalWrite (kamera, låg);
}
void loop() {
Vi använder switch fallet för att styra vår dolly. "mode" stater som cyklar Dollyn är i-handtag, push, på eller av.
Att trycka på knapparna växlar mellan lägena.
om (digitalRead(off) == hög)
{läge = 4; disp = 4;}
annat if (digitalRead(on) == hög)
{läge = 1; DEP = 1;}
annat if (digitalRead(push) == hög)
{läge = 3; disp = 3;}
annat if (digitalRead(pull) == hög)
{läge = 2; disp = 2;}
annat
läge = läge;
om (läge! = 1)
{//this läser potentiometern, kartor värdet till en tid och visar den för lcd
vala = analogRead(va);
valb = analogRead(vb);
kartan = (vala, 1023, 0, 0, 10000); maximal tid motorn kan köras i en cykel är 10 sekunder.
b = karta (valb, 1023, 0, 0, 30000); maximal tid för varje cykel är 30 sekunder.
Delay(100);
Detta skriver ut cykeltiden på LCD-skärmen.
LCD.display();
digitalWrite (bakgrundsbelysning, hög);
lcd.setCursor (0, 0);
LCD.Print ("Pull =");
LCD.Print(a / 1000);
LCD.Print(".");
LCD.Print (en/100 - en/1000 * 10);
LCD.Print ("sec");
lcd.setCursor (0, 1);
lcd.setCursor (0, 1);
LCD.Print ("cykel =");
LCD.Print(b / 1000);
LCD.Print(".");
LCD.Print (b/100 - b/1000 * 10);
LCD.Print ("sec");
Delay(100);
digitalWrite (ledde, låg);
digitalWrite (bakgrundsbelysning, hög);
digitalWrite (kamera, låg);
}
Växla (läge) {
fall 1:
denna kod körs en gång när provcykeln startas visar "Kör" på LCD-skärmen för en sekund.
digitalWrite (ledde, högt);
om (disp == 1)
{
LCD.Clear();
digitalWrite (bakgrundsbelysning, hög);
LCD.Print("Running");
Delay(1000);
LCD.Clear();
}
Disp = 0;
Detta är vår huvudsakliga bit kod
Detta utlöser kameran, styr cykeln och aktiverar lysdioderna.
lcd.noDisplay();
digitalWrite (bakgrundsbelysning, låg);
digitalWrite (ledde, högt);
digitalWrite (x, hög);
digitalWrite (y, låg)
digitalWrite (aktivera, hög);
Delay(a); motorn drar kameran
digitalWrite (aktivera, låg); motorn stannar
Delay(b-a-1000); största fördröjning
digitalWrite (kamera, hög); kameran är trigered
Delay(100);
digitalWrite (kamera, låg);
Delay(900);
bryta;
fall 2:
Detta kommer att ständigt dra kameran mot motorn.
LCD.display();
digitalWrite (aktivera, hög);
digitalWrite (x, hög);
digitalWrite (y, låg)
denna kod körs en gång när provcykeln startas att Visa "Dra" på LCD-skärmen för en sekund.
om (disp == 2)
{
LCD.Clear();
digitalWrite (bakgrundsbelysning, hög);
LCD.Print("pulling");
Delay(1000);
LCD.Clear();
}
Disp = 0;
bryta;
fall 3:
Detta kommer att ständigt driva kameran från motorn.
LCD.display();
digitalWrite (aktivera, hög);
digitalWrite (x, låg);
digitalWrite (y, hög)
denna kod körs en gång när provcykeln startas att Visa "Pushing" på LCD-skärmen för en sekund.
om (disp == 3)
{
LCD.Clear();
digitalWrite (bakgrundsbelysning, hög);
LCD.Print("Pushing");
Delay(1000);
LCD.Clear();
}
Disp = 0;
bryta;
fall 4:
Detta kommer att stoppa alla processer av Dollyn.
digitalWrite (x, låg);
digitalWrite (y, låg)
digitalWrite (aktivera, låg);
denna kod körs en gång när provcykeln startas att Visa "Stoppad" på LCD-skärmen för en sekund.
om (disp == 4)
{
LCD.Clear();
digitalWrite (bakgrundsbelysning, hög);
LCD.Print("stopped");
Delay(1000);
LCD.Clear();
}
Disp = 0;
bryta;
standard:
LCD.display();
digitalWrite (x, låg);
digitalWrite (y, låg)
digitalWrite (aktivera, låg);
}
}