Lite smällar och booleska matematik utan matten (9 / 9 steg)

Steg 9: Lite banka exempel



Programmering mikrokontroller eller försöka dekonstruera vad en mikrokontroller program gör inbegriper bearbetas mycket av binär information. Till exempel uttalade ett sätt där microcontrollers kommunicerar med andra enheter att använda en enkel två tråd gränssnitt kallas I2C, jag fyrkant C.

Med hjälp av I2C innebär binära data skickas till en adress till en enhet som lyssnar på önskemål från mikrokontroller, (master enheten) när en begäran tas emot av enheten, (slav), enheten skickar en eller flera byte data tillbaka till mikrokontroller.

Lära sig att programmera kommunikation till I2C enheter eller försöka vända ingenjör uppgifter från I2C enheter du har att titta på data som är binär form.

Jag kommer att ge dig ett enkelt exempel på hur man gör detta med hjälp av metoder som du just har lärt dig.

Lära sig I2C är det ofta klokt att studera andra program programmerare har skrivit så du kan luta hur data överförs mellan mikrokontroller och enheter.

Så i vårt exempel ska vi titta på ett program kodsträng vissa satellitpositioneringssystem skrivet att lite bang en I2C-enhet.

Jag har tagit prov bit slog C program skrivet i satellitpositioneringssystem av Xander som upprätthåller en Robot blogg heter:

http://botbench.com/blog/2011/02/20/bit-Banged-I2C-Master-on-robotc-for-Arduino/#comment-2674

I denna Bloggartikel är han lite banka en I2C program kan kommunicera med en lysdioder att blinka LED-lampor i en sekvens.

Vi kommer att dekonstruera den ögla för han använder för att skicka en serie bitar till arrayen LED.

Om du har aldrig programmerat innan, vänligen Google variabler, for-loop, funktioner och samtidigt loopar.

Här är det kodstycke som vi kommer att titta på:

medan (sant) {

för (int jag = 0; jag < 8; i ++) {

PCF8574write (~ (1 << i));

wait1Msec(50);

}

}

Normalt skulle jag skriva en liten Python program att skriva ut värdena i en for-loop. Men eftersom jag antar att alla är nya programmering och boolesk logik jag manuellt skriver ut varje iteration av den for-loop.

Särskild anmärkning: Python stöder inte datatypen byte, så i vår lite banka exemplet ska vi använda den modulooperatorn att visa ett heltal som en osignerad byte. Vänligen Google inf du behöver hjälp,

Till exempel: om vi utför den i följande exempel: >>> ~ (1 << 0), i Python får vi -2, om vi sedan använder >>> bin(-2), vi får "-0b10". Att rätta till problemet och Visa en full 8 bitar typ i följande:

>>> bin (-2% 256)

"0b11111110"

För att riktigt se vad som händer med bitar måste vi se full 8 bitar.

While looping forever, ignorera detta för nu.
Den för loop loopar där variabeln är jag lika från 0 till 7.

PCF8574write() är en anpassad funktion som vi inte kommer att diskutera som en del av denna artikel. Du kan referera till koden för att se vad den här funktionen gör på egen hand.

Vad vi är intresserade av är värdet av i och vad binärt tal vi passerar till funktionen PCF8574write().

Låter översätta varje iteration av den for-loop:

Låter typ ut varje iteration av loopen i Python:

Variabeln jag börjar som 0 och slutar på en värdera av 7:

>>> ~ (1 << 0)

-2

Kan dra detta uttryck isär. Vi utför en bitvis inte på följande värde. Vi flytta lämnade värdet 1, jag tider.

Det är vi inte 1 << 0. Vi driver bitar från höger till vänster. Vi är vänster flytta 1, 0 gånger eller vi inte den mest signifikanta biten i den första öglan.

Så om vi tittar på det binära värdet av -2 får vi:

>>> bin (~ (1 << 0))

"0b10"

Låt oss fortsätta, du kommer snart se mönstret.

>>> ~ (1 << 0)

-2

>>> bin (-2% 256)

'-0b11111110'

>>> ~ (1 << 1)

-3

>>> bin (-3% 256)

'-0b11111101'

>>> ~ (1 << 2).

-5

>>> bin (-5% 256)

'-0b11111011'

>>> ~ (1 << 3)

-9

>>> bin (-9% 256)

'-0b11110111'

>>> ~ (1 << 4)

-17

>>> bin (-17% 256)

'-0b11101111'

>>> ~ (1 << 5)

-33

>>> bin (-33% 256)

'-0b11011111'

>>> ~ (1 << 6)

-65

>>> bin (-65% 256)

"0b10111111"

>>> ~ (1 << 7)

-129

>>> bin (-129% 256)

'-0b1111111'

Den ledande 0 utelämnas i detta fall.

Den skulle läsa "-0b01111111"

Nu om du redan inte har gjort det, gå till webbsidan och titta på video:

http://botbench.com/blog/2011/02/20/bit-Banged-I2C-Master-on-robotc-for-Arduino/#comment-2674

Nu titta på lite mönster mycket noga.

Observera att som den för loop ökar som den 0 lite håller på flytta till vänster.

Jag kommer försöka att inte förvirra dig alltför mycket just nu, (det finns en annan bitvis AND med en vänster SKIFT i funktionen i2c_write()), prioriteringen är att förstå booleska operationer och hur du använder Python för att hjälpa dig att förstå dessa booleska operationer. Om du känner dig till det, bakåtkompilera funktionen i2c_write() för att se hur lite mönstren är ytterligare bearbetas innan de skickas till arrayen LED.

Arbeta med microcontrollers när lite är hög, har en 1 värde, är normalt en enhet påslagen. Om lite är låg, är med ett 0 värde en enhet avstängd.

Märker att vi arbetar med 8 bitar och våra LED array har 8 lysdioder. Ja, det är korrekt. Varje gång vi satt lite på, slår att ha värdet 1, vi på lampan. När vi satt bitvärdet till 0 eller iväg lite, stänga vi av lampan.

Nu titta på videon igen. Nu bild som både för slingor, en i den huvudsakliga funktionen och den for-slinga i i2c_write funktionen kör lika snabb eller snabbare än lysdioder blinkar.

Logiken i i2c_write() presterar lite mer komplex logik, använda python att visualisera hur hög eller låg lite stater förändras när de 8 bitarna är att vara klev igenom den for-loop.

Vänligen hålla å lära sig om mikrokontroller och booleska operationer, eftersom dessa byggstenar att programmera mikrokontroller.

Se Steg
Relaterade Ämnen

Origami vas, pennhållare och presentförpackning (3 modeller i 1 handledning)

Lär dig hur man gör ett papper origami vas, penna eller pennhållare och papper presentförpackning (3 modeller i 1 handledning).Detta är en lätt och användbara origami modeller tillverkade av tryckpapper (A4 eller Letter) från två eller tre origami en...

Göra en Magzine och nyheter pappershållare i nästan utan kostnad!

Presentationer,, en mycket användbar instructable att hantera våra tidskrifter och tidningar varje vecka utan att låta dem utom synhåll.mitt rum magzines funnit alltid här och där och när det behövs, jag kunde inte hitta dem.Så sade "nödvändigheten ä...

Lite hållare nyckelring - EDC

Jag har tidigare skrivit om hur finner jag mig behöva en skruvmejsel, men behöva improvisera eftersom jag inte har en skruvmejsel på mig.Problemet är nu löst. Presentation av vardagliga bär lite innehavaren.Detta projekt visar dig hur du gör din egen...

Sojasås behållare och ätpinnar hållare

Mitt projekt syftar till att vara en praktisk assistent när servering och äta orientalisk mat. Det är en kopp med bläckfisk form, som innehåller soja i dess huvud och rymmer upp till fyra par ätpinnar i sina tentakler. Det gör det lätt och bekväm red...

Daft Punk hjälmar och kompletta kostymer utan att använda en vacuumformad-form

gjort i 4 månader, för ca $50 per hel kostym, inklusive hjälmen.Först av allt, dessa är inte exakta repliker, de har inte programmerade lysdioder, och ingen vacuumformad-bildade visir. Jag var försökande till gör den här för så billigt som möjligt, o...

Hur man skapar en enkel men effektiv DIY luft pistol på ditt hem från lite smått och gott liggande

denna pistol är ett bra tidsfördriv och liksom de flesta andra DIY produkter, behöver inte några särskilda komponenter men med detta är att du inte ens behöver kliva ur ditt hus för det!Det material som krävs för denna pistol är följande:1) ett 6 tum...

Mobila parad/brasa soffa, med Getto Blaster, mugghållare och sex-pack svalare

jag har en soffa som jag satte hjul på, så jag kan resa ner på gatan att sträckan parad och grannskapet eldar.Det är bra, ladda alla dina saker på den som en vagn och bara dra den längs.Nu har jag gjort lite mer arbete på soffan, The Getto soffan, ha...

Plywood Tobbogan bild, eller hur man bygger med plywood och (nästan) utan fästen

en vän utmanade mig att bygga en tobbogan bild som förpackningar bort på sommaren med minimikrav krångel och utrymme.Jag hade byggt en med skruvar och virke innan, men detta system lämpar inte sig för lätt demontering. Även med bultar skulle du behöv...

3d-skrivare - 1kg rulle hållare och glödtrådens Guide

jag var riktigt sugen på att testa svart ABS plast på våra upp 3d-skrivare. När spolen kom med posten insåg jag att 1 Kg spolen inte skulle passa innehavaren på skrivaren. Dilemma?? Jag tror inte det. Allt jag behövde göra var design och skriva ut en...

PVC iPad hållare och fäste för tält camping

min fru och jag gick nyligen på en camping resa till stranden och jag postat en instructable om hur man ruggedize och bug-bevis en liten luftkonditionering här. Jag visste vi skulle ta våra iPad med oss för att kolla e-post och titta på film men jag...

IPod mini 32gig och nytt batteri utan att repa den.

i detta Instructable, jag kommer att visa dig hur du enkelt öppna upp en ipod mini utan repor eller Messina upp upp och ner och uppgradera batteriet och enheten.Tack vare geek teknik för inspiration har de instruktioner, men inte ett exempel på om en...

Hur man bygger en springa fram låda i din vinkällare och skapa dolda lagring

Bygga en dold pop-up låda är ett enkelt och prisvärt sätt att skapa en en av ett slag, distinkt och ursprungliga vinkällare. Samma idé kan användas för alla skåp runt ditt hem för olika ändamål: lagring, säkerhet, design och bekvämlighet! Kolla in de...

Att hitta DORY & Nemo TELEFONHÅLLARE och HÖGTALARFÖRSTÄRKARE från papper handduk rulle

Jag ville ha en anpassad telefonhållare, så jag gjorde detta.Steg 1: Vad du behöverAllt jag använde var:* kräppapper: orange, svart och vitt för NEMO, och mörkt blå, svart och gult för DORY. Och blått papper för havet.* en papper handduk rulle: men o...

Styra raspberry pi musen och tangentbordet distans utan att ansluta fysiska mus och tangentbord (inte vnc)

Jag behövde få tillgång till flera hallon pajer för att styra musen och tangentbordet på skärmen utan hooking fysiska mus och tangentbord till var och en av dem i ett av mina projekt.Att göra att jag har skrivit en liten instrumentpanel som tillåter...

Billig Laptop hållare och svalare

detta är en mycket billig laptop hållare bestämde jag mig för att bygga efter att jag får vissa prestanda problem med min Laptop kommer att överhettas. På den bilden använder jag en 1,5 volt Likström till 12 DC adapter. Så med det jag kan välja olika...

Återanvända en logga till en Geocache behållare och hur man kan dölja en

avskuren topp med en såg på önskad längd.Steg 1: Borra hålet Borra ett hål i botten bit stor nog att passa i behållaren som du ska använda i det. Jag använde stora borr och sätta flera hål i en cirkel mönster.Steg 2: Borra ett hål i den övre delen Bo...

Tiny citron batteriet, och andra konstruktioner för noll kostnad el och led-ljus utan batterier

Hej, du förmodligen redan vet om citron batterier eller bio-batterier.De används normalt för utbildningsändamål och de använder elektrokemiska reaktioner som genererar låga spänningar, brukar visas i form av en led eller glödande-lampa.Dessa batterie...

Snabb och enkel Shorts utan ett mönster

jag är trött på förstör fina shorts arbetar i trädgården så jag hittade några gamla denim i min tyg stash och piskade upp några snabba och bekväma shorts.Allt du behöver är:-tyg-sax-måttband-den person som kommer att bära shorts (att mäta)-Strykjärn...

LEGO nyckel hållare och Obs klipp

hur man gör en cool Lego nyckelhållare med ett Obs klipp...Steg 1:Titta på denna video guide:Vad du behöver1) en Lego Stödplatta2) ett urval av Lego tegelstenar och plattor3) självhäftande spackel eller kuddar4) ett vattenpass3) tangenter på en nycke...