RC bil RC Tank omställning med Arduino (3 / 10 steg)
Steg 3: Bil - till tank-logik signal konvertering
Jag kom upp med tabellen ovan och drog slutsatsen att jag skulle behöva mer styrsignaler från sändaren för att kunna styra inte bara tank manövrering utan också tornets rotation och två lasrar (en kulspruta) och en för canon. Jag insåg det fanns inte mer tillgängliga styrsignaler från Tx/Rx. Så jag löste problemet med programvara, använda Tx manöverspakarna på ett sätt som liknar transport knapparna på en musikspelare, där en stadig tryck FFWs musik, och en momentan push väljer nästa musikspår. Jag kodade utsignaler i Arduino programmet enligt följande:
FWD/REV stadig push - flyttar tanken FWD/varv
FWD momentan push - växlar kanon laser/på
REV momentan push - växlar kulsprutan laser/på
VÄNSTER/höger spak stadig push - flyttar tanken FWD vänster/höger eller REV vänster/höger i kombination med ett stadigt tryck FWD/REV spaken. Att trycka på stadig vänster gör bara tanken snurra vänster på plats. Att trycka på stadig rätt gör bara tanken snurra höger på plats.
VÄNSTRA momentan push - växlar torn CCW rotation
JUST momentan push - växlar torn CW rotation
Koden är skriven så att ingen annan insignal ska ha någon effekt en växla på signal har tagits emot tills den motsvarande toggle off signal tas emot. Så, om du trycker ögonblickligt vänster, tornet kommer att rotera CCW tills du igen ögonblickligt driva kvar. Medan tornet roterande, kommer skicka någon annan kontrollsignal att ignoreras. För enkelhet.
Programmet debounces spaken push signalerna från Tx genom att ta en behandling, väntar på några millisekunder, och tar en andra behandling. Om den andra behandlingen är densamma som den första, antas signalen stabil och giltig, om inte, spaken signalerna läses igen. Det medför en eftersläpning men det märks nästan inte (för mig iallafall).
Här är den Arduino skissen: