Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Robotopsætning
- Trin 2: Joystick-opsætning
- Trin 3: Kontrol af joystickværdier
- Trin 4: Justering af X- og Y -variablerne
- Trin 5: Konvertering af X og Y til værdier for venstre og højre motor
- Trin 6: Afsendelse af værdier som radiomeddelelser
- Trin 7: Modtagelse af meddelelser på din robot
- Trin 8: Brug af de indgående meddelelser til at styre robotens motorer
- Trin 9: Brug af knapperne - Modtagelse af yderligere meddelelser
- Trin 10: Afsendelse af yderligere meddelelser ved hjælp af controllerens knapper
- Trin 11: Næste trin
Video: Programmering af en Micro: Bit Robot & Joystick: Bit Controller Med MicroPython: 11 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Til Robocamp 2019, vores sommerrobotiklejr, lodder unge i alderen 10-13 år, programmerer og bygger en BBC micro: bit baseret 'antweight robot', samt programmerer en micro: bit, der skal bruges som fjernbetjening.
Hvis du i øjeblikket er på Robocamp, skal du springe til trin 3, da vi har gjort de to første trin som en gruppe
Dette er en trin-for-trin guide til at få en mikro: bit robot til at kommunikere med en joystick: bit controller.
Det tager ikke den hurtigste vej for at få alt til at fungere, men prøver tingene i små bidder, så du kan teste koden, mens du går, sætte dit eget præg på den og forstå, hvorfor vi gør de ting, vi laver !
Til denne aktivitet bruger vi vores egen brugerdefinerede robot, men den fungerer sammen med enhver robot, der bruger en lignende motordriver, f.eks. En L9110.
Designfiler til vores robot kan findes her:
Denne vejledning er skrevet til begyndere, men hvis du aldrig har brugt en micro: bit med MicroPython før, anbefaler vi, at du først prøver et enklere program, f.eks. Vores navneskilt Instructable: https://www.instructables.com/id/Felt -Microbit-Nam …
Forbrugsvarer
2x BBC micro: bit
Robot, der fungerer med en BBC micro: bit (se forklaring ovenfor)
joystick: bit controller (vi fik vores fra Cool Components)
Trin 1: Robotopsætning
Du har et par muligheder for at skrive MicroPython -kode til din micro: bit:
- Mu, som du kan downloade og installere herfra:
- Online -editoren, som du finder her:
Disse instruktioner forudsætter, at du bruger Mu
Åbn Mu, og tilslut din micro: bit til din computer. Mu burde erkende, at du bruger en micro: bit og vælge micro: bit 'Mode', men hvis det ikke gør det, skal du ændre det manuelt.
Få en kopi af robotmotortestkoden herfra:
Hvis du ikke er vant til Github, kan det være utilsigtet! To nemme måder at få denne kode på er:
- Gem Raw -filen på din computer, og indlæs den derefter i Mu:
- Kopier og indsæt al den givne kode i en ny fil i Mu.
Klik nu på knappen 'Flash' fra Mu's værktøjslinje for at sende din nye kode til micro: bit.
Dette virker ikke, medmindre micro: bit er tilsluttet
Det gule lys på bagsiden af micro: bit begynder at blinke. Når den er færdig, er din kode blevet overført.
OPSÆTNING AF MOTORRETNINGERNE
Dette program tænder motorerne i forskellige retninger, når du trykker på 'A' -knappen på micro: bit.
Det du vil have skal ske er:
- Når 'A' vises, skal venstre motor fremad
- Når 'B' vises, venstre motor baglæns
- Når 'C' vises, skal højre motor fremad
- Når 'D' vises, højre motor baglæns
Dette vil sandsynligvis ikke være tilfældet, da det afhænger af, hvordan du har tilsluttet din robot!
Øverst i koden finder du en liste over variabler, der bestemmer hvilken pin på micro: bit styrer hvilken motorretning.
Hvis du bruger en af vores robotter (filer), skal du skifte variabelnavne rundt for at få robotten til at bevæge sig i de rigtige retninger:
Hvis du bruger en egen robot, skal du kontrollere, hvilke stifter motordriveren er forbundet til, før du redigerer koden.
TEST AF DRIVET
Tjek nu, hvordan din robot kører ved at erstatte testkoden i hovedsløjfen med din egen kode.
Du fortæller robotten at køre ved at kalde drev () -funktionen. Dette kræver to argumenter - en værdi for den venstre motor og en værdi for de højre motorer, mellem 0 (slukket) og 1023 (maks. Hastighed).
Ved at kalde f.eks. Drev (500, 500) fortæller du begge motorer, at de skal tænde i fremadgående retning med cirka halv hastighed.
Prøv et par muligheder for at få en fornemmelse af, hvor lige den kører, og hvor godt den vender.
Tip: motortestene var inde i både et stykke tid True loop og en if -sætning - motorerne ville ikke dreje, før du trykkede på A -knappen på micro: bit, og det kontrollerer for evigt, om du har trykket på A -knappen.
Tip: motorerne slukker ikke, før du fortæller dem det! De vil altid fortsætte med at lave deres sidste instruktion.
VALGFRIT: FORBEDRING AF KØRING I EN RET LINE
Hvis din robot ikke kører i en lige linje, drejer en af dine motorer muligvis hurtigere end den anden.
Efter at have kontrolleret, at der ikke er noget fysisk, der forhindrer hjulet i at dreje frit, kan du redigere koden i kørefunktionen for at reducere hastigheden på den hurtigere motor.
Rul op for at finde definitionen på drevfunktionen, og se de to øverste instruktioner:
def -drev (L, R):
# Nedenfor er en justering for at korrigere for uoverensstemmelse mellem motorhastighed L = int (L*1) R = int (R*1)
Disse to linjer tager i øjeblikket værdien af L og R, gang dem med 1, og sørg for, at de stadig er hele tal (int).
For eksempel, hvis din venstre motor er hurtigere, skal du ændre *1 på linjen til *0,9, og se om det forbedrer tingene.
Du vil ikke være i stand til at gøre det perfekt, men du kan blive ved med at justere, indtil det kører rettere.
OPSÆTNING AF RADIOEN
Konfigurer nu radioen ved at tilføje følgende linjer øverst i din kode:
importere radio
radio.config (kanal = 7, gruppe = 0, kø = 1) radio.on ()
Dette giver din robot mulighed for at modtage instruktioner fra en anden micro: bit, men i øjeblikket vil den modtage instruktioner fra enhver anden micro: bit.
Dette skyldes, at kanal 7 og gruppe 0 er standardkanaler.
Skift disse tal, vælg en kanal mellem 0-82 og en gruppe mellem 0-255. Nu modtager din micro: bit kun instruktioner fra andre med de samme konfigurationsoplysninger.
kø = 1 betyder, at micro: bit kun beholder en indgående besked ad gangen - dette giver en lidt hurtigere responstid end standard, som er 3.
Nu skal du redigere din hovedsløjfe -kode for i stedet for at køre instruktioner, når du trykker på en knap, vente på en indkommende radiomeddelelse og reagere korrekt.
Prøv følgende kode som en test (den vil ikke gøre noget, før du har konfigureret joysticket i trin 2):
mens det er sandt:
meddelelse = radio.receive () hvis besked == 'fremad': drev (500, 500)
Trin 2: Joystick-opsætning
Tag din robots micro: bit ud, og tilslut joystickets micro: bit i stedet
Få en kopi af joystick-opsætningskoden herfra:
Konfigurer radioen ved hjælp af den samme konfiguration (kanal og gruppenummer) som du gjorde for robotten - dette giver de to mulighed for at kommunikere med hinanden.
I slutningen af programmet skal du starte din hovedsløjfe:
mens det er sandt:
hvis button_a.was_pressed (): radio.send ('frem')
Denne kode bruger endnu ikke joysticket: bit. Den bruger knap A på micro: bit til at sende en besked.
Sørg for, at både din robot og din controller micro: bits har strøm, og tryk derefter på knappen for at sende din besked.
Hvis beskeden er modtaget med succes, og din robot bevæger sig … godt gået! Du er færdig med opsætningsinstruktionerne.
FEJLFINDINGSTIPS
Hvis du får en fejlmeddelelse på din controller micro: bit … fejlsøg din controller -kode
Hvis du får en fejlmeddelelse på din robotmicro: bit … blev din radiomeddelelse sendt med succes! Men robotten kan ikke forstå det, så tjek, at den besked, du har sendt, og den besked, du fortalte robotten, skal lytte efter.
Hvis der overhovedet ikke sker noget
- Sørg for, at du har blinket den korrekte kode til hver mikro: bit - det er let ved et uheld at blinke den forkerte!
- Sørg for, at dine kanal- og gruppetal matcher på hver mikro: bit
Trin 3: Kontrol af joystickværdier
De næste par trin bruger alle controllerkoden
Inden du kan bruge joysticket på din controller, skal du vide, hvilke slags værdier du får, når du skubber pinden.
Erstat din hovedsløjfe med følgende kode:
mens det er sandt:
joystick = joystick_push () print (joystick) sleep (500)
Flash denne kode til din micro: bit, og klik derefter på REPL -knappen på Mu's værktøjslinje. Dette åbner en terminal i bunden af editoren, som giver dig et real-time link til micro: bit.
Dette virker ikke, medmindre micro: bit er tilsluttet
Mens REPL er åben, skal du trykke på reset -knappen på bagsiden af din micro: bit.
Du bør se nogle værdier bringe 'udskrevet' til din skærm:
Skub joystickets pind og se, hvad der sker med tallene.
Noter de værdier, der er givet, når joysticket er i midterposition - i mit tilfælde (518, 523).
Klik på REPL -knappen på Mu's værktøjslinje igen for at lukke den - du vil ikke kunne blinke ny kode til micro: bit, mens den er åben.
Trin 4: Justering af X- og Y -variablerne
Du vil ændre de værdier, der er givet af joystick -funktionen, således at:
- i midten er det nul
- op er positiv
- ned er negativ.
Dette matcher instruktioner, robotten har brug for - et positivt tal for at køre fremad, og et negativt tal for at køre baglæns.
Se på de tal, du fik i det sidste trin. Det første tal er x, og det andet tal er y.
Rediger joystick_push () definitionen, der allerede er i programmet, til minus dine værdier fra originalen:
def joystick_push ():
x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 return x, y
Brug dine egne numre, de kan være forskellige fra mine
Flash din nye kode, åbn REPL, tryk på micro: bit's reset -knap og kontroller dine værdier.
Får du (0, 0)?
Trin 5: Konvertering af X og Y til værdier for venstre og højre motor
I øjeblikket vil dette joystick ikke være særlig nyttigt at køre en robot med. Skubbet fremad hele vejen får du en værdi som (0, 500).
Hvis du gav disse numre til robotten, ville den tænde den højre motor, men ikke den venstre, hvilket ikke er det, du ønsker skal ske!
Dette diagram viser, hvad der sker med x- og y -værdierne, når du flytter joysticket, og hvad vi vil have robotten til at gøre, når du flytter joysticket.
Du skal bruge nogle matematik til at blande x- og y -værdierne for at give dig noget mere nyttigt.
n
MATTERNE
Lad os starte med at skubbe joysticket helt frem.
Et eksempel på de værdier, du kan få, er:
x = 0
y = 500
For at være nyttig for robotten vil du få værdier som disse:
venstre = 500
højre = 500
Lad os prøve at tilføje x og y på forskellige måder for at se, hvilke tal vi får:
x + y = 0 + 500 = 500
x - y = 0 - 500 = -500 y + x = 500 + 0 = 500 y - x = 500 - 0 = 500
Lad os nu se, hvad der sker, hvis vi skubber joysticket helt til højre.
Et eksempel på de værdier, du kan få, er:
x = 500
y = 0
For at få robotten til at dreje til højre, vil du have den venstre motor til at køre fremad, og den højre motor til at køre baglæns:
venstre = 500
højre = -500
Lad os prøve vores formel igen:
x + y = 500 + 0 = 500
x - y = 500 - 0 = 500 y + x = 0 + 500 = 500 y - x = 0 - 500 = -500
Sammenlign de to sæt formler for at finde ud af, hvilken indstilling der giver dig den korrekte venstre værdi, og hvilken mulighed vil give dig den korrekte rigtige værdi.
Prøv det med nogle af de værdier, du får fra dit eget joystick, for at sikre, at den formel, du vælger, fungerer hele tiden.
n
UDVIDELSE AF JOYSTICK -FUNKTIONEN
Udvid og rediger joystick -funktionen for at lave to nye variabler til venstre og højre, og for at returnere disse værdier i stedet for x og y:
def joystick_push ():
x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 venstre = højre = return venstre, højre
Flash din nye kode, åbn REPL, tryk på micro: bit's reset -knap og kontroller dine værdier.
Får du de værdier, du forventer?
Hvis du har brug for mere hjælp, kan du tjekke vores eksempelkode her:
Trin 6: Afsendelse af værdier som radiomeddelelser
Nu har du nogle værdier klar til at sende til din robot.
Rediger din hovedsløjfe, så den kontrollerer joystickets værdier, men i stedet for at udskrive værdierne bliver den klar til at blive sendt som en radiomeddelelse.
mens det er sandt:
joystick = joystick_push () besked = str (joystick [0]) + "" + str (joystick [1])
Dette sender faktisk ikke beskeden endnu!
Hvad sker der i denne nye kodelinje?
- joystick [0] betyder den første bit information, der kommer ud af joystick -funktionen (til venstre)
- joystick [1] er den næste smule information (højre)
- str () konverterer begge disse numre til strengformat (tekst i stedet for tal) - dette er nødvendigt for at kunne sende oplysningerne over radioen.
Du vil være vant til at se + for at betyde tilføjelse - det kan både tilføje tal sammen og sammenkæde strenge, hvilket betyder, at det vil holde de to informationsstykker sammen.
Eksempel:
150 + 100 = 250
str (150) + str (100) = 150100
Så sammenkædning vil holde dine venstre og højre værdier sammen.
For at tvinge en adskillelse mellem de to informationsstykker (så robotten ved, at de er to informationsstykker), skal du sammenkæde en ekstra streng mellem dem ved hjælp af "". Talemærkerne omkring rummet betyder, at det allerede er en streng.
Endelig forlæng din kode for at sende denne nyoprettede besked over radioen:
radio.send (besked)
søvn (10)
Søvnen bremser afsendelsen af meddelelser, så den modtagende micro: bit ikke bliver overbelastet med for meget information!
Flash denne kode til din controller micro: bit og fejlsøg eventuelle fejl, før du går videre til det næste trin
Trin 7: Modtagelse af meddelelser på din robot
Gå tilbage til din robotkode fra begyndelsen - husk at frakoble din controller micro: bit, så du ikke ved et uheld blinker robotkoden til den
Rul ned til din hovedsløjfe - fjern testkoden, og tilføj denne i stedet:
mens det er sandt:
besked = radio.receive () print (meddelelse) sleep (100)
Dette indstiller en variabel, der svarer til den indgående meddelelse, og udskriver meddelelsen til REPL - for at kontrollere, at meddelelserne kommer igennem som forventet.
Flash din nye kode, forbundet til REPL, og tryk derefter på joysticket.
Du bør få noget som dette:
FEJLFINDINGSTIPS
Hvis du får en fejlmeddelelse på din controller micro: bit … fejlsøg din controller -kode
Hvis du får en fejlmeddelelse på din robotmicro: bit … blev din radiomeddelelse sendt! Men robotten kan ikke forstå det, så tjek, at den besked, du har sendt, og den besked, du fortalte robotten, skal lytte efter.
Hvis der overhovedet ikke sker noget
- Sørg for, at du har blinket den korrekte kode til hver mikro: bit - det er let ved et uheld at blinke den forkerte!
- Sørg for, at dine kanal- og gruppetal matcher på hver mikro: bit
Trin 8: Brug af de indgående meddelelser til at styre robotens motorer
Du får nu to numre sendt over radioen som en streng.
Du er nødt til at opdele denne meddelelse i to strenge, derefter konvertere strengene tilbage til tal igen og overføre dette til drevfunktionen. Der sker meget på én gang!
Inden du gør dette, skal du kontrollere, at den besked, du modtager, er i det korrekte format.
Hvis der ikke sendes nogen beskeder, modtager du i stedet 'Ingen'. Hvis du prøver at dele dette, får du en fejlmeddelelse.
mens det er sandt:
meddelelse = radio.receive () hvis beskeden ikke er Ingen: besked = meddelelse.split () drev (int (besked [0]), int (besked [1]))
Hvad sker der her?
- Den nye kode kører, hvis meddelelsen er noget andet end 'Ingen'.
- message.split () søger efter et mellemrum i meddelelsen (som vi tilføjede i det sidste trin) og bruger dette til at dele meddelelsen i to.
- int (meddelelse [0]), int (besked [1]) gør det modsatte af, hvad vi gjorde i det foregående trin - får hvert stykke information individuelt og konverterer det til et helt tal (et helt tal).
- int (meddelelse [0]) bruges som værdien for den venstre motor i drivfunktionen, og int (meddelelse [1]) bruges som værdien for den højre motor.
Kontroller, at det virker - drejer motorerne, når du skubber joysticket?
Hvis ikke - tid til noget fejlfinding!
Hvis ja, fantastisk! Du har en fungerende fjernbetjeningsrobot!
Brug lidt tid på at øve dig med din robot, før du går videre til det næste trin. Kører det som du forventer?
De næste trin viser dig, hvordan du bruger knapperne på joysticket til at tilføje ekstra funktionalitet til din robot
Hvis du vil se vores version af denne kode indtil nu:
- Robot:
- Controller:
Trin 9: Brug af knapperne - Modtagelse af yderligere meddelelser
I øjeblikket vil din kode forsøge at opdele enhver meddelelse, der ikke er Ingen. Det betyder, at hvis den f.eks. Modtager 'hej', får du en fejlmeddelelse.
For at tillade din micro: bit at fortolke andre meddelelser, skal den først kontrollere hver forventet besked og derefter kun opdele meddelelsen, hvis den ikke er blevet bedt om at gøre noget andet med den.
Udvid din kode sådan:
hvis meddelelsen ikke er Ingen:
hvis besked == 'hej': display.show (Image. HAPPY) elif message == 'duck': display.show (Image. DUCK) else: message = message.split () drive (int (meddelelse [0])), int (besked [1]))
For det første vil den kontrollere, om den har modtaget meddelelsen 'hej'. Hvis det er tilfældet, vil det vise et lykkeligt billede, derefter gå tilbage til toppen af løkken og se efter den næste besked.
Hvis meddelelsen ikke er hej, vil den derefter kontrollere, om meddelelsen er 'and'.
Hvis beskeden ikke enten er 'hej' ELLER 'and, vil den gøre det sidste på listen, som opdeles meddelelsen og tænde motorerne. Det vil ikke forsøge at dele meddelelsen, hvis den har modtaget 'hej' eller 'and', hvilket betyder, at du ikke får en fejlmeddelelse fra nogen af disse to meddelelser.
Det dobbelte lighedstegn er vigtigt - det betyder 'er lig med', sammenlignet med et enkelt lighedstegn, som sætter noget (så meddelelse = 'hej' betyder, at vi sætter variablen til 'hej', besked == 'hej' betyder, at vi spørger, om beskeden er lig med 'hej').
Prøv det med kun to muligheder for nu, for at teste det - du kan tilføje så mange andre meddelelser, som du vil senere.
Link til arbejdskode:
Trin 10: Afsendelse af yderligere meddelelser ved hjælp af controllerens knapper
Tag din robots micro: bit ud, og tilslut joystickets micro: bit i stedet
Gå tilbage til din controller -kode for at redigere.
I lighed med robotkoden ønsker vi, at controlleren kontrollerer, om du prøver at sende andre meddelelser, før du sender joystickværdierne.
Øverst i sløjfen vil vi stadig have, at den kontrollerer joystickets aktuelle værdier, men vi vil også have den til at kontrollere, om der i øjeblikket trykkes på en knap:
mens det er sandt:
joystick = joystick_push () knap = button_press ()
button_press () returnerer en værdi A, B, C, D, E eller F afhængigt af hvilken knap der trykkes i øjeblikket (hvis der ikke trykkes på noget, returnerer den None).
Nu kan vi lave en if-elif-else-erklæring, som vi gjorde for robotkoden-ved hjælp af to knapper og sende joystickværdien, hvis der ikke trykkes på en knap.
hvis knap == 'A':
radio.send ('hej') sleep (500) elif -knap == 'B': radio.send ('and') sleep (500) else: message = str (joystick [0]) + "" + str (joystick [1]) radio.send (besked) søvn (10)
Når der trykkes på en knap, skal du sende en af de meddelelser, som du fortalte robotten at passe på i det foregående trin.
Meddelelsen sendes, når der trykkes på knappen, og computere er meget hurtigere end mennesker! Så det kan sende beskeden mange gange, før det er lykkedes at tage fingeren af knappen.
Søvnen efter at have sendt beskeden bremser den, så den ikke vil kontrollere knappen så hurtigt igen - prøv et par tal her for at få den perfekte tid til dig - for langsomt, og den reagerer heller ikke hurtigt, og din robot vil modtage så mange knapbeskeder, at den måske holder op med at reagere på joysticket!
Virker det?
Hvis du får fejlmeddelelser, skal du tænke grundigt over, hvad du lige har ændret, og hvad der sker.
Hvis du får en fejl på robotten, når du trykker på en knap på din controller - ved du, at meddelelsen kommer frem, men det forvirrer robotten. Kontroller, at den besked, du har sendt, og den besked, du har bedt robotten om at kigge efter, er den samme.
Link til arbejdskode:
Trin 11: Næste trin
Du har nu den viden, du har brug for til at arbejde med din robots motorer og med din joystick: bit -controller
Brug denne viden til at forbedre de to programmer og gøre dem til dine egne. Nogle ideer herunder!
Du har seks knapper på din controller! Hvad vil du have, at de skal gøre?
- Hvad med at programmere en danserutine, som din robot skal udføre på kommando? Skriv en algoritme til kommandoer til drev (), adskilt af søvn () -kommandoer!
- Vil du ændre den retning, robotten bevæger sig i, så den let kan køre på hovedet? Tænk på x- og y -værdierne på dit joystick. Hvad repræsenterer de, og hvordan kan du manipulere dem?
- Har din robot (eller kan du tilføje!) Ekstra funktioner som lysdioder, en højttaler eller sensorer?
Ideer til at forbedre koden
- Kan du hjælpe din robot med at klare ukendte meddelelser ved at bruge prøve/undtagen kode?
- Matematikken, der bruges til at beregne venstre og højre værdier fra joysticket, giver os ikke hele værdiområdet (robotens drev kan acceptere et tal op til 1023). Kan du redigere denne kode for at få et bedre område?
- Der er andre metoder til at blande joystickværdierne - kan du finde en bedre måde at gøre det på?
Anbefalede:
Sådan køres servomotorer ved hjælp af Moto: bit Med Micro: bit: 7 trin (med billeder)
Sådan køres servomotorer ved hjælp af Moto: bit Med Micro: bit: En måde at udvide funktionaliteten af micro: bit på er at bruge et kort kaldet moto: bit af SparkFun Electronics (ca. $ 15-20). Det ser kompliceret ud og har mange funktioner, men det er ikke svært at køre servomotorer fra det. Moto: bit giver dig mulighed for at
Space Invaders i Micropython på Micro: bit: 5 trin
Space Invaders i Micropython på Micro: bit: I vores tidligere artikler har vi undersøgt spilfremstilling på GameGo, en bærbar retro -spilkonsol udviklet af TinkerGen education. De spil, vi lavede, mindede om gamle Nintendo -spil. I dagens artikel vil vi tage et skridt tilbage, for at
Arduino Robot With PS2 Controller (PlayStation 2 Joystick): 10 trin (med billeder)
Arduino Robot With PS2 Controller (PlayStation 2 Joystick): I denne vejledning viser jeg dig, hvordan du bruger en trådløs Playstation 2 (PS2) joystick til at styre en robot tank. Et Arduino Uno -bord blev brugt i kernen af dette projekt. Den modtager kommandoer fra den trådløse controller og indstiller motorernes hastighed
Kom godt i gang med Esp 8266 Esp-01 Med Arduino IDE - Installation af Esp -plader i Arduino Ide og programmering af Esp: 4 trin
Kom godt i gang med Esp 8266 Esp-01 Med Arduino IDE | Installation af Esp-tavler i Arduino Ide og programmering af Esp: I denne instruktion lærer vi, hvordan du installerer esp8266-tavler i Arduino IDE, og hvordan du programmerer esp-01 og uploader kode i den. Da esp-tavler er så populære, så jeg tænkte på at rette en instruks til dette og de fleste mennesker står over for et problem
Introduktion til 8051 -programmering med AT89C2051 (gæstespil: Arduino): 7 trin (med billeder)
Introduktion til 8051-programmering med AT89C2051 (gæstespil: Arduino): 8051 (også kendt som MCS-51) er et MCU-design fra 80'erne, der stadig er populært i dag. Moderne 8051-kompatible mikrokontroller fås fra flere leverandører i alle former og størrelser og med en lang række eksterne enheder. I denne instruktion