Make: it Robotics starterskit - analyseren van de LineFollowing.ino deel 1 (2 / 2 stap)

Stap 2: Uitvoer van readOptical.py


Zoals ik al zei in een eerdere blog, heb ik alles gedaan van de wiskunde en de logica voor u, alles wat je hoeft te doen is te volgen.

Hier is uw kans om te krijgen gebruiken om te lezen van binaire en hexadecimale getallen. At is eerst kijkt als wartaal, maar je zal gebruiken om het te krijgen. Als u problemen ondervindt,

Lees de tutorials die ik heb gemaakt een verwijzing naar in mijn eerdere blog posts.

Als u niet wilt gaan in deze grote detailniveau dan kijk voor de gedeelten van de uitvoer wanneer uit de resultaten blijkt ofwel "Doorgaan", "linksaf" of "rechts"

Laten we analyseren wat er gebeurt in het programma:

Eerste off laat kijken naar de opmerkingen van de methode van de readOptical() in ons lineFollow.ino-programma:

0x000 optical1 zwart

0xFF optical1 wit

0x100 optical1 wit

0x1ff optical1 zwart

0x2XX niet klaar; geen gebruik maken van deze waarde

Merk op dat drie optische sensor lezingen met 0x1 of 0x2 begint hex.

De rest beginnen met 0x0 of 0xf. Als u deze getallen naar een binair getal converteren ziet u een patroon. Laden Python Idle en typt u het volgende:

>>> formaat (oxff, '#018b')

De parameter format '#018b' geeft aan dat nummer weergegeven in het doorgegeven als een binaire 16-bits getal zodat het formaatbevel het volgende zal terugkeren:'0b0000000011111111′

Merk op dat er 8 nullen gevolgd door 8 1′s.

Deze 16-bits getal heeft de minst significante 8 bits ingesteld op 1.

Als u type ter naar de volgend in Python:

>>> hex(int('11111111′,2))

U krijgt: '0xff'

Laat nu het volgende proberen:

>>> formaat (0 × 0, '#018b')

Python zal terugkeren: ' 0b0000000000000000′

Laten we proberen de andere twee waarden die de functie readOptical() retourneert.

>>> formaat (0x1ff, '#018b')

' 0b0000000111111111′

>>> formaat (0 × 100, '#018b')

' 0b0000000100000000′

Hoeveel 1′s worden weergegeven in de binaire vertegenwoordiging van 0x1ff?

Welk standpunt is de 1 in, gerekend van rechts, voor 0 × 100?

Corrigeren, In beide gevallen 1 wordt weergegeven in de achtste bit positie vanaf de rechterkant.

De methode van de readOptical() in de lineFollow.ino alleen waarden geretourneerd die een verschillend patroon hebben.

Optische 1 sensoren retourneren alleen nummers die zijn ingesteld binnen 8 bits.

Optische 2 sensoren kunnen hebben nummers die zijn ingesteld in de achtste bit positie, of nummers van de 16-bits.

Laten we beginnen met het kijken naar onze resultaten van de readOptical.py Python programma.

We kijken eerst naar de variabelen die ingesteld in het begin van het lineFollow.ino-programma zijn:

sensor _in = 0xff

Actie1 = 0x0

Actie2 = 0x0

sensorValue1 = 0x0

sensorValue2 = 0x0

De eerste sensor waarde die we aan het lezen bent is 0xff, de rest van de variabelen zijn 0x0.

De eerste als verklaring een bitsgewijs en op twee waarden voert:

Als ((sensor_in & 0xf00) == 0)

Kijk naar de uitvoer weer:

0xFF & 0xf00

0xFF = 0b0000000011111111

0xf00 = 0b0000111100000000

Als 0xff & 0xf00 == 0

binnen als sensor_in & 0xf00 == 00

XFF & 0xff

sensorValue1 = 0b0000000011111111

& 0b0000000011111111

——————

0b0000000011111111

sensorValue1 = 0xff

Kijk goed naar de bitsgewijze AND-bewerking, we controleren om te zien als een van de hogere 8 bits van de 16-bits nummer sensor_in is ingesteld.

In dit geval de vergelijking en retourneren 0 als er geen bits groter is dan de opdat significante 8 bits ingesteld in de variabele sensor_in.

Dus het eerste deel van de als verklaring zal alleen gelden als sensor_in 0x000 of 0xff bevat.

Sinds de eerste als bewering klopt, commando we het van:

sensorValue1 = sensor_in & 0xff;

ANDing een getal met zichzelf geeft ons het zelfde nummer, sensorValue1 = 0xff

0xFF & 0xff

sensorValue1 = 0b0000000011111111

& 0b0000000011111111

--------------------------------

0b0000000011111111

sensorValue1 = 0xff

Laten we overgaan tot de tweede als verklaring:

Als (sensorValue1 == 0x00)

Als we kijken naar de sensorValue1 variabele, het bevat 0xff hiervoor als verklaring vals is en doet niet worden uitgevoerd.

Bewegen op:

Als (sensorValue1 == 0xFF)

sensor_in is gelijk aan 0xff dus voeren we uit de als verklaring:

Actie1 = Actie1 | 0x01;

In dit geval zijn we de variabele van Actie1 gelijk actie en toepassen van de exploitant van het Bitwise of op de waarde van 0 × 01 instellen.

Kijkend naar de resultaten van de OR operatie Actie1 wordt ingesteld op een waarde van 0x01.

binnenkant van sensorValue1 == 0xff

0x0 | 0x01

Actie1 = 0b0000000000000000

| 0b0000000000000001

-------------------------------

0b0000000000000001

Actie1 0x1 =

Op de volgende als verklaring:

Als (sensorValue2 == 0x00)

We controleren of de sensorValue2 gelijk aan 0x00 is, en momenteel sensorValue2 natuurlijk gelijk aan 0x00 is dus voeren we uit de als verklaring:

Actie1 = Actie1 | 0x02;

binnenkant van sensorValue2 == 0x00

0x1 | 0x02

Actie1 = 0b0000000000000001

| 0b0000000000000010

-----------------------------------

0b0000000000000011

Actie1 = 0 × 3

In de laatste als verklaring die we controleren:

Als (sensorValue2 == 0xFF)

sensorValue2 is niet gelijk aan 0xff zodat we gaan. De eindwaarde van Actie1 is 0 × 03, we sluiten de laatste if verklaring en gaat u verder op de de volgende reeks als verklaringen:

Als (Actie1! = Actie2)

{

Als (Actie1 == 3)

line_following.go_forward(50);

Als (Actie1 == 1)

line_following.line_following_turn_left(50);

Als (Actie1 == 2)

line_following.line_following_turn_right(50);

Als (Actie1 == 0)

line_following.go_forward(50);

}

Actie2 = Actie1;

}

Actie1 0x3 =

Actie2 = 0x0

We controleren de eerste als verklaring:

Als (Actie1! = Actie2)

Dit geldt dus we de geneste if invoeren verklaring:

Actie1 0x3 =

zo voeren wij uit de true als verklaring:

line_following.go_forward(50);

Nu in ons programma readOptical.py keren we terug naar de top van de voor lus en we weer met de volgende waarde beginnen: sensor_in = 0x100

Actie1 0x3 =

Actie2 0x3 =

sensorValue1 = 0xff

sensorValue2 = 0x0

In dit geval de sensor_in variabele is gelijk aan 0x100

Laten we eens kijken naar de eerste if verklaring opnieuw:

Als ((sensor_in & 0xf00) == 0)

sensorValue1 = sensor_in & 0xff;

anders als ((sensor_in & 0xf00) >> 8 == 1)

sensorValue2 = sensor_in & 0xff;

Zoals we tijdens de laatste lus, de eerste als verklaring is op zoek naar beide 0xff of 0 × 00 gewezen.

In dit geval de als verklaring is onwaar, zodat we anders indien springen verklaring: In dit geval de als verklaring doet een bitsgewijs en en een recht Shift 8 bits.

Dus zijn we nemen van de 1 op de 9 bits locatie en 8 keer verschuiven naar rechts,

0 × 100 = 0b0000000100000000

0xf00 = 0b0000111100000000

--------------------------------------

& 0b0000000100000000

Rechts

0b0000000000000001

Deze waarde is gelijk aan 1 dus voeren we uit de als verklaring.

sensorValue2 = sensor_in & 0xff;

0 × 100 & 0xff

sensorValue2 = 0b0000000100000000

& 0b0000000011111111

------------------------------------

0b0000000000000000

SensorValue2 = 0x0

Naar beneden de if verklaringen, controleren we de volgende als verklaring:

Als (sensorValue1 == 0x00)

sensorValue1 is gelijk aan 0xff zodat we overslaan dit als verklaring. Volgende als verklaring:

Als (sensorValue1 == 0xFF)

Actie1 = Actie1 | 0x01;

De als bewering klopt dus wij de if voeren statement

binnenkant van sensorValue1 == 0xff

0x3 | 0x01

Actie1 = 0b0000000000000011

| 0b0000000000000001

----------------------------------

0b0000000000000011

Actie1 0x3 =

Volgende als verklaring:

Als (sensorValue2 == 0x00)

Actie1 = Actie1 | 0x02;

De als bewering klopt dus wij de if voeren statement

binnenkant van sensorValue2 == 0 × 00

0x3 | 0x02

Actie1 = 0b0000000000000011

| 0b0000000000000010

---------------------------------------

0b0000000000000011

Actie1 0x3 =

We eindigen de if verklaringen en bewegen op de de volgende reeks als verklaringen:

Als (Actie1! = Actie2)

In dit geval Actie1 is gelijk aan Actie2 zodat we overslaan de if-instructie die motor instructies stuurt.

We lus terug rond om de voor lus opnieuw en selecteer de volgende waarde van de sensor_in.

We hebben op dit punt de motor bestuurder één set als instructies om vooruit te gaan, als de sensoren zowel leest witte gestuurd.

In de volgende Instructable gaan wij over de sensor-waardes lezen als de linker sensor zwart is.

Gerelateerde Artikelen

Make: it Robotics starterskit - analyseren van de LineFollowing.ino deel 2

Make: it Robotics starterskit - analyseren van de LineFollowing.ino deel 2

In de laatste Instructable begonnen we analyseren de bitsgewijze bewerkingen in de schets van de lineFollow.ino. We keken hoe de sensor lezingen worden geïnterpreteerd zodat de robot vooruit gaan.In deze tutorial zullen we blijven onze analyse bij he
Make: it Robotics starterskit - Sensor Data draadloos verzenden

Make: it Robotics starterskit - Sensor Data draadloos verzenden

In dit Instructable we willen nemen wat we geleerd hebben in "Make: it Robotics Starter Kit – draadloze connectiviteit" en "Make: it Robotics Starter Kit – vastleggen van Sensor Data" en combineert deze gegevens vastleggen van de senso
Make: it Robotics starterskit - begrip Bitwise Math

Make: it Robotics starterskit - begrip Bitwise Math

Deze blogpost is een voortzetting op mijn knutselen met de Make: it Robotics Kit. Hopelijk kan ik doorgeven op sommige van de informatie die ik heb geleerd zodat het gemakkelijker voor anderen om aan de slag over het werken met de Robotics Kit.Na het
Make: it Robotics starterskit-draadloze connectiviteit

Make: it Robotics starterskit-draadloze connectiviteit

In dit blog bericht wij gaan nemen van de informatie die we geleerd hebben in de eerdere blogpost getiteld "Make: it Robotics starterskit-Software deel 2″ Real-time sensorgegevens vastleggen en verzenden van deze gegevens draadloos naar onze computer
Make: it Robotics starterskit-Driver board vertrouwd

Make: it Robotics starterskit-Driver board vertrouwd

In deze blogpost zullen we een kijkje op de kaart die bij de zorg: it Robotics Starter Kit wordt geleverd. Er is geen documentatie die wordt geleverd met de Start kit betreffende het bestuur van de bestuurder dan het schema.Tenzij u al enige ervaring
Make: it Robotics Starter Kit vastleggen van Sensor Data

Make: it Robotics Starter Kit vastleggen van Sensor Data

Laatste Instructable bespraken we een beetje over wat er in het linefollow.ino-programma doet. Ik heb gepresenteerd een Python-script dat ons toelaten zal om het analyseren van de bit-gewijze if verklaringen om te zien hoe de waarde die de methode re
Automatisch kwantificeren en analyseren van gebeurtenissen met Wolfram gegevens neerzetten en próta OS

Automatisch kwantificeren en analyseren van gebeurtenissen met Wolfram gegevens neerzetten en próta OS

Het Wolfram gegevens Drop is een open dienst die maakt het makkelijk om te accumuleren gegevens van welke aard ook, vanaf elke locatie - het instellen voor onmiddellijke berekening, visualisatie, analyse, opvragen of andere activiteiten.Dit instructa
Analyseren van elk willekeurig IR-protocol met alleen je Arduino board

Analyseren van elk willekeurig IR-protocol met alleen je Arduino board

onlangs was ik in diepe onderzoek over hoe te maken van onze eigen "zelf leren universele Remote". Dus toen ik voor de procedure zocht voor het maken van deze, eerste stap die ik vond is het analyseren van IR-protocol, pulse de frequentie (perio
How To Make Quilled omzoomd met behulp van papier Art filigraan bloemen | DIY

How To Make Quilled omzoomd met behulp van papier Art filigraan bloemen | DIY

How To Make Quilled omzoomd met behulp van papier Art filigraan bloemen | DIYIn deze tutorial u hoe leert te quilled omzoomd bloemen in op steenworp afstand. Laten we beginnen.Nou ik hoop dat je genoten hebt van dit ambacht en zo ja, vergeet dan niet
Hoe om te analyseren van een voertuig CAN-BUS met behulp van een Arduino verbonden aan een CAN-BUS schild en vrije software.

Hoe om te analyseren van een voertuig CAN-BUS met behulp van een Arduino verbonden aan een CAN-BUS schild en vrije software.

De Hardware die is ingebouwd in een vorige InstructableIn een vorige instructable Ive getoond hoe kun je samen hardware als u wilt scannen uw kan bus, de instructable kan hier worden gevonden.Ik heb gemaakt een forumdraad uitleggen een beetje meer in
Hoe maak je een korte Film van Professional voor $80 (deel I - pre-productie).

Hoe maak je een korte Film van Professional voor $80 (deel I - pre-productie).

Deel II kan hier worden gevonden: How to make van een korte Film van Professional voor $80 (deel II - productie)Ik heb het maken van films sinds de vijfde klas. In deze tijd, heb ik talloze korte broek die voortdurend beter krijgen gemaakt. Als een s
Versterking van een 3D afgedrukt deel

Versterking van een 3D afgedrukt deel

Zoals we weten allemaal, 3D gedrukte onderdelen geproduceerd door onze gewone huis type printers zijn niet zo sterk en wanneer gebruikt in plaats van de werkelijke delen, zij duren niet lang. Ik dacht dat het zou geweldig zijn als het is mogelijk om
Overspuiten van wielen - polijsten van bouten en moeren (deel 1 van 3)

Overspuiten van wielen - polijsten van bouten en moeren (deel 1 van 3)

dit instructable doorloopt de stappen die ik nam te refinish een set oude 3-delige wielen die ik had rond leggend.  De wielen zijn oude Racing Hart Type-C wielen uit de vroege jaren 90, zodat ze ongeveer 20 jaar oud op dit punt, en waren vrij beat up
De doos van de Gift van de decoratieve Origami: Deel II, Bling toevoegen

De doos van de Gift van de decoratieve Origami: Deel II, Bling toevoegen

Deze tutorial zal gaan over de opties die ik heb gekozen om mijn dozen versieren. Terwijl ik kon heel goed gewoon zeggen "doen wat je wilt", hoop ik dat mijn eenvoudige decoraties, evenals sommige nuttige adviezen uit mijn ervaring zal helpen st