Stap 9: programmeren.
De volgende paar stappen zal gaan door enkele van de basic programmeren en maken van de mobiele app. Niet om deze stappen te lang, zal ik deel enkele van de scripts voor de basisfuncties die kunnen worden aangepast voor de meeste robots met behulp van de EZ-Robot-platform.
Voor E4-B4 van programmering en controle gebruikte ik EZ-Robot EZ-Builder voor Windows-software die je van uw eigen exemplaar van hier krijgen kunt. Volledige details van het gebruik van de EZ-Robot-platform, met tutorials van het gebruik van de besturingselementen en scripts schrijven (sommige van de tutorials schreef ik mezelf als een station van de Gemeenschap om anderen te helpen) kunnen hier worden gevonden. Dus hier is geprogrammeerd ik E4-B4.
Na het openen van een nieuw project van de EZ-Builder, was het eerste wat dat ik moest doen om in te stellen van de servo's. Als ik ben met behulp van de WS-32, was dit een beetje een andere procedure dan opzetten van servo's direct op de EZ-B. aangesloten Eerst uit, één regel van het script is nodig en moet uitvoeren wanneer de EZ-B v4 en WS-32 verbindt met uw EZ-Builder project...
#This is het initialisatie script voor de WS-32 aangesloten op UART poort 0,
#and die dit alleen hoeft te worden uitgevoerd, eenmaal telkens wanneer het project wordt geopend en een verbinding is gemaakt.
UARTInit(0,0,38400)
Ik heb een "Script Manager" toegevoegd aan mijn project dat mij verdopen "Setup systeemmenu", en stel de uitschuifbare armen in het lichaam. Dus, het hulpprogramma hulpprogramma wapens gebruik het volgende script...
#USB ARM IMPLEMENTEREN
#Servo posities zijn P500 minimale die gelijk aan de servo positie 1 is,
#and P2500 maximaal die gelijk aan de servo positie 180 is.
$pos = "P1400"
#The S700 is voor servo snelheid.
$m_speed = "S700"
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
Opmerking: U ziet een heleboel scripts die ik heb gepost hier, hebben een
# Naast een deel van de code. Alles wat deze hash voor het heeft, is een lijn van het script dat niet wordt uitgevoerd, en wordt alleen gebruikt voor het maken van notities.
Vanwege de manier waarop die de meeste digitale servo's zijn ontworpen, hebben ze de neiging om een irritante zoemende geluid bij de positie van een bedrijf. Dus ter bestrijding van dit, ik heb toegevoegd sommige extra lijnen van script dat een servo van de positie van het bedrijf vrijgeven zal. Dit is in wezen snijdt de macht aan de servo en zal niet onschuldig houden ongeacht het gewicht. Dit is prima voor de horizontale uitschuifbare armen en kleppen, want er geen gewicht voor de servo is te houden. De release-scripts worden hoofdzakelijk gebruikt in de opdrachten "Intrekken Arm" en "Nauwe Flap". Dus is hier wat het script ziet er nu als...
Voor nut arm implementatie...
#USB ARM INTREKKEN
#This intrekken script moet eerst uitvoeren om te initialiseren een servo na een opdracht van servo vrijgeven.
$pos = "P600"
$m_speed = "S700"
de controle van de snelheid van de #is
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
#A kleine 100 milliseconden slaap wordt toegevoegd voor een soepele overgang.
Sleep(100)
#Now het script implementeren kunnen probleemloos worden uitgevoerd.
#USB ARM IMPLEMENTEREN
$pos = "P1400"
$m_speed = "S700"
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
en voor hulpprogramma Arm intrekken...
#USB ARM INTREKKEN
$pos = "P600"
$m_speed = "S700" #is toerentalregeling
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
#A slaap wordt toegevoegd om tijd voor de arm te trekken.
SLEEP(4000)
#USB ARM RELEASE
#Notice de "P0" hieronder. Dit is de enige waarde onder P500 die kunnen worden gebruikt. Dit brengt de servo.
$pos = "P0"
$m_speed = "S700"
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
De koepel en het lichaam kleppen ook gebruik vergelijkbaar scripts met hun minimale en maximale posities aangepast voor elke servo waar nodig. De eerste script manager heeft elke individuele script voor elke afzonderlijke actie, bijvoorbeeld... Klep open, klep dicht, hulpprogramma implementeren, gereedschap intrekken, enzovoort. Dit gebeurt ook voor "lichten op" en de "Off" en de sensor lezingen starten/stoppen.
Als u wilt combineren de bewegingen voor het openen van een klep dan het implementeren van een hulpprogramma, is een tweede script manager toegevoegd aan de EZ-Builder-project. Ik zal het hulpmiddel van de USB-hub gebruiken als een voorbeeld. In de nieuwe script manager, die ik omgedoopt tot "Master Control Menu", u kan kopiëren en plakken van de scriptopdrachten in het "Instelmenu controle", maar er is een gemakkelijkere manier. Telkens wanneer u een nieuw script van besturingselement toevoegt, dit automatisch gegenereerd iets genaamd een "besturings", ook wel genoemd een "Cheat Sheet" commando. Dit zijn de opdrachten van het snelmenu te starten, stoppen, onderbreken en hervatten van een specifieke script. Dus, voor het implementeren van de USB-hub, ik gebruik het volgende script...
ControlCommand ("Setup Menu besturing", ScriptStart, "USB-klep open")
#This slaap opdracht geeft tijd voor de klep te openen voordat de arm implementeert.
Sleep(2000)
ControlCommand ("Setup Menu besturing", ScriptStart, "USB arm implementeren")
En om het intrekken van de USB-hub, de volgende wordt gebruikt...
ControlCommand ("Setup Menu besturing", ScriptStart, "USB arm intrekken")
#This slaap geeft genoeg tijd om het hulpprogramma intrekken voordat de klep sluit.
Sleep(4000)
ControlCommand ("Setup Menu besturing", ScriptStart, "USB-klep dicht")
Hetzelfde wordt gebruikt met alle van de andere hulpprogramma's, met de lengte van de opdrachten van de Sleep() aangepast voor elk hulpprogramma. (Veilig en niet het risico beschadiging iets, ik stel voor om te verwijderen van de voorste huid voor het instellen en testen van de combinatie-scripts).
De koepel servo is anders ingesteld als deze is aangesloten rechtstreeks aan de
EZ-B, dus maakt gebruik van een verschillende en eenvoudiger script dan de WS-32 UART-opdrachten voor handmatige bediening. U kunt het volgende script gebruiken om te doen een simpele draai van de koepel...
#This opdracht stelt de servo snelheid.
#Servo snelheden variëren van "0", die is snelste, en "10" die langzaamste is.
#This voorbeeld wordt ervan uitgegaan dat de servo is aangesloten op de digitale poort "D0".
Servospeed(D5,2)
#This commando vertelt hoeveel graden de servo moet wenden.
#Servo centrum positie is "90" met "1" wordt minimaal
#and "180" wordt maximale.
Servo(D5,120)
In de mobiele interface die kan worden gebruikt op een PC van het mobiele apparaat, heb ik een script dat de koepel 10 graden op elke druk op de knop draait. Dit is handig als ik wil kijken via E4-B4 de camera op een PC of mobiel apparaat...
if(getservo(D13) > 10)
servodown(D13,7)
endif
Sleep(100)
Om te wisselen van het knipperen van het rode en blauwe LED's, ik gebruik een eenvoudige lus-script dat tussen rood en blauw elke twee seconden knippert totdat ik handmatig stopt het script, ik gebruik ik een besturings te doen zo...
#This wordt ervan uitgegaan dat de rode LED is aangesloten op de digitale poort D22 en blauw naar D23.
: lus
set(D22,on)
Sleep(2000)
set(D22,off)
Sleep(30)
set(D23,on)
Sleep(2000)
set(D23,off)
Sleep(30)
set(D22,on)
Sleep(2000)
set(D22,off)
Sleep(30)
set(D23,on)
Sleep(2000)
set(D23,off)
Sleep(30)
Goto(loop)
Ik gebruik de ultrasone afstandssensor op de bier-klauw om te herkennen wanneer iemands hand dicht ligt bij geven of pick-up van een object. Dit zal leiden tot een beheerscript voor de opdracht om open sluit de klauw...
ControlCommand ("Willekeurige Talk Board", Track_14)
Sleep(1500)
ControlCommand ("Master Control Menu" ScriptStart, "Bier Arm implementeren")
Sleep(5000)
: lus
# krijgen de afstand van de ping-sensor
$distance = getping (d19, d20)
Als ($distance < 6)
ControlCommand ("Setup Menu besturing", ScriptStart, "Bier klauw open")
Sleep(2000)
ControlCommand ("Setup Menu besturing", ScriptStart, "Bier klauw dicht")
Sleep(2000)
ControlCommand ("Master Control Menu" ScriptStart, "Bier Arm intrekken")
ControlCommand ("bier test", ScriptStop)
endif
# Een vertraging om te voorkomen dat het script wordt uitgevoerd te snel
Sleep(50)
goto(loop)
Een soortgelijk script wordt gebruikt voor object vermijden met behulp van de ping-sensoren in de voeten, wanneer E4 is bewegen. Als een object, zoals een muur op de linker voet wordt ontdekt, zal hij stoppen en rechtsaf, dan blijven bewegen vooruit. En als de rechtervoet iets detecteert, hij zal stoppen, linksaf, dan vooruit.
Voor iets anders geef ik een voorbeeld van de rook en gas detectie sensor...
: lus
$smoke=getADC(adc2)
if($Smoke>40)
saywait ("Ik ben nu sensing rook of gas dampen in de ruimte.")
Sleep(10000)
elseif($Smoke>60)
saywait ("waarschuwing. Ik ben nu sensing een verhoogd niveau van rook of gas dampen in de ruimte.")
endif
Sleep(100)
goto(loop)
Hier is een ander scriptvoorbeeld. Wanneer een bepaalde tijd is bereikt, zal E4 zal herinneren iemand om hun pillen te nemen, dan hen afzien...
#The naam van dit script heet "Pillen".
waituntiltime (16, 35)
zeggen ("het is 35 4 pm, en tijd voor uw middag medicatie.")
ControlCommand ("Willekeurige Talk Board", Track_14)
Sleep(1500)
ControlCommand ("Master Control Menu" ScriptStart, "Bier Arm implementeren")
Sleep(5000)
: lus
$distance = getping (d19, d20)
Als ($distance < 6)
ControlCommand ("Setup Menu besturing", ScriptStart, "Bier klauw open")
Sleep(2000)
ControlCommand ("Setup Menu besturing", ScriptStart, "Bier klauw dicht")
Sleep(2000)
ControlCommand ("Master Control Menu" ScriptStart, "Bier Arm intrekken")
#This stopt dit script wordt uitgevoerd zodra de bewerking is voltooid.
ControlCommand ("Pillen", ScriptStop)
endif
Sleep(50)
goto(loop)
Sleep(2000)
Dit bijzondere script kan worden toegevoegd aan een navigatie en gezicht erkenning script, zodat E4 kunt navigeren en vinden de persoon (mits dat gezicht van de personen is toegevoegd aan de E4-B4 facial recognitie bibliotheek), afzien dan de pillen op de ingestelde tijd.
Spraakherkenning is een vrij eenvoudig systeem instellen voor het uitvoeren van scripts. Dit kan gebruikt worden om vrijwel geen script of opdracht uitvoeren in het E4-project. Zolang de computer met behulp van uw is goed opgezet en opgeleid voor spraakherkenning, en een goede microfoon wordt gebruikt, typt u eenvoudig in een zin wat u zou zeggen tegen de robot, voeg dan de reiszak opdracht die u wilt laten uitvoeren wanneer dat zin wordt herkend. Hier kunt u de benodigde scriptopdrachten of controle-opdrachten gebruiken.
Zoals gezegd, dit zijn slechts een handvol van eenvoudige scriptvoorbeelden die gebruikmaakt van de E4-B4, maar hij heeft ook ton meer zoals object en kleur erkenning, chatbot en tekst vertaler-programma en een persoonlijkheid-generator die helpt E4 autonome vermogens geven. Meer details van wat besturingselementen en capaciteiten zijn beschikbaar om te gebruiken, en met veel voorbeelden van scripts die kunnen worden gebruikt, gewijzigd of aangepast voor de meeste robots, kunnen worden gevonden op de website van EZ-Robot. Ik ben gebouw op E4-B4 van autonome programma stukje bij beetje, dus één dag die hij zal zitten kundig voor auto dok zijn batterijen opladen en willekeurige veiligheid veegt van het huis doen. Hij heeft al een huisveiligheid systeem in de plaats, waar hij ondernemen kan (zoals waarschuwen mij op Twitter en start streaming van een live video feed of geluid een alarm en nemen/Verstuur foto's) als een geluid wordt gedetecteerd, een licht komt over als het naar verwachting niet of zijn PIR sensor wordt geactiveerd.
Zoals ik al zei, zou ik kon gaan op de lijst van alle scripts hier op dit Instructable, maar dit de zeer lange Instructable zoals E4-B4 ton van code geprogrammeerd heeft. Vergeet niet, als u vragen hebt met betrekking tot om het even wat over E4-B4 bouwen of programmering, voel je vrij om te vragen en ik zal mijn best doen om te reageren op u. U kunt ook een kijkje op een van de E4-B4 van projecten door hier te klikkenen het openen van het bestand met EZ-Builder hebben. Deze projecten waren beschikbaar gesteld voor delen met iedereen, en bevatten veel van de besturingselementen en programmering scripts die worden gebruikt, met inbegrip van het object en de facial recognitie programmering die wordt gezien in de video's.