Kategori: Programmering

Kul med Micro:bit!

Under veckan har m.nu haft besök av prao-eleven Alvin som hjälp oss i vår dagliga verksamhet. Efter en tuff vecka fick Alvin sätta sig ner och experimentera med en av våra nygamla produkter; BBC micro:bit! Läs vad Alvin skrivit nedan 🙂
Micro:bit är ett kraftfullt och enkelt verktyg. Den kan användas för att lära sig kodning men även till att programmera led slingor, visa tiden och som spelmotor. Micro:bit har 25 led lights och två programmeringsbara knappar!

Köp Här!
TILL M.NU

För att programmera krävs det bara en webbläsare. Den har massvis av sensorer som kan ta reda på din riktning, temperatur, och fuktighet. Ifall du programmerar en micro:bit kan du sätta den i din trädgård eller en planta för att visa om plantorna behöver vattnas.

Jag utvecklade under en eftermiddag en kort version av gamla arkad-dängan Space Invaders. Mitt mål var att det skulle kunna spelas på micro:bit skärmen. Det första jag gjorde var att skapa sprites för spelaren och fienden. Därefter la jag till rörelse med knapparna på kortet, samt rörelse till fienden.

Efter att ha tagit hjälp av det stora communityt runt microbit lyckades jag inkludera skott och ett livsystem. Slutligen la jag till poäng och en bossfight. Under mitt test använde jag blockkodsfunktionen men det finns även python och javascript support.
Micro:bit finns att köpa här: Köp micro:bit Getting Started Kit (2317093) för 399 Kr hos m.nu
Koda med micro:bit kan du göra här: Microsoft MakeCode for micro:bit (microbit.org)
Vill du kika på min kod? Kolla här: Space raider remastered 2022 (microbit.org)
Hoppas att ni tyckte det var kul att läsa om mitt lilla projekt! //Alvin the prao!

Trappbelysning

Och m sade: “Varde ljus“; och det vart ljus.

LED-ljus är något nästan heligt på m och vi försöker få in det överallt där vi kan. Nästa ställe var således trappen!

Men att bara lysa upp den räcker inte. Vi vill kunna styra den på något smart sätt och gärna med så mycket färg som möjligt! Således blev det en variant med Neopixlar och en D1 mini!

För detta projekt behövs

1st D1 mini1st Levelshift Shield2st PIR Motion SensorMassor med aluminiumprofiler och frontarMassor med NEO-pixlarKraftfull batterieliminator på 5VEtt par motstånd. Lämpligtvis 10KOhmLite kablar och övrigt smått och gott

Förberedelser:

Installera senaste versionen av Arduino IDE.

Från bibliotekshanteraren i Arduinomjukvaran installera Adafruits NeoPixel bibliotek.

Under inställningar lägg till följande adress i fältet för “Additional Boards Manager URLs”: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Sist men inte minst, gå till “Board Manager” och installera esp8266:

Gör så här:

Hårdvara

Vi börjar som vanligt med vår D1 mini med att löda på headers.

Vi fortsätter och löder på våra PIR-sensorer direkt på levelshift shielden. 5V och jord går till deras respektive pinne. För signalen spelar det inte så stor roll, men undvik pinne D3 då knappen på levelshift shielden är kopplad till den. Vi valde D1 och D2.

Passa även på att löda på ett par motstånd mellan jord och pinnarna för PIR-sensorerna.

Sist men inte minst kopplar vi in vår list till skruvterminalerna. Notera att CLK inte har något kabel kopplad till sig. Observera också att skruvterminalerna på levelshift shielden och usbporten på D1 mini skall peka åt samma håll vid monteringen.

Mjukvara

Nu till den spännande biten!

Vi programmerar som vanligt i Arduinos IDE och hela koden hittar du på vår Github.

Om du bara vill använda vår kod rakt av är det några saker du måste ändra. På rad 7 byter du ut “mySSID” till namnet på ditt nätverk och på rad 8 anger du lösenordet.

7: const char* ssid = "mySSID";
8: const char* password = "myPassword";

Rad 9 talar om vilken effekt som skall köras som default (vid spänningsbortfall t ex). Mer om det senare.

Rad 10 är om du monterat elektroniken i toppen eller botten av trappen. Default är toppen, men ändra till “false” om du monterat elektroniken i botten av trappan.

9: int currentMode = 1;
10: bool topToBottom = true;

Rad 14-16 definierar vilka pinnar vi använder. LED_PIN skall aldrig ändras, men FIRST_PIR_PIN och LAST_PIR_PIN är vilka pinnar du lödde på dina PIR sensorer. FIRST är den som är i toppen på trappen och LAST är den som är i botten.

14: #define LED_PIN D7
15: #define FIRST_PIR_PIN D1
16: #define LAST_PIR_PIN D2

Sist men inte minst behöver vi definiera vår trapp! Det görs på raderna 18 och 19.

18: int theStair[] = {10, 12, 15, 15, 12, 10};
19: int LED_COUNT = 72;

Rad 18 innehåller en “dictionary” med hur många dioder varje trappsteg är. Första trappsteget är där första LEDen på slingan är.

Rad 19 är helt enkelt hur många dioder vi totalt har om vi slår ihop alla trappsteg.

Styr trappen

Vår kod innehåller en liten webbserver och “trappen” kommer koppla upp sig på ditt WIFI. Om du har serielmonitorn uppe när den startar så skrivs IP-nummer ut, annars brukar det gå att lista ut i din router.

Gå nu till IP-numret för din trapp och du kommer mötas av följande gränssnitt:

Här kan du se vilket program som är aktiverat för närvarande, byta program, ändra färg samt välja om programmet skall aktiveras av rörelsesensorerna eller vara igång hela tiden.

Vill du kontrollera trappen från t ex din styrenhet istället så bygger all styrning på web-hooks. URLen är uppbyggd enligt följande där X är önskat program:

http://ip-nummer/setmodeX

I program där man kan ändra färg definieras färgen med GRBW koder som argument enligt nedan, där G/R/B/W är en siffra mellan 0 och 254:

http://ip-nummer/setmodeX?g='+G+'&r='+R+'&b='+B+'&w='+W

Tillgängliga program:

Mode 0: Alltid avstängdMode 1: Dimma ett steg i taget från det håll man kommer gående i trappen. Endast vit färg.Mode 2: Samma som mode 1 men plockar färgen från gränssnittetMode 3: Tänd hela trappen i en färg. Om rörelse är aktiverat släcks trappen efter 5 sekunder. Färgen ställs in i gränssnittet.Mode 4: “Masken” i regnbågens alla färger. Kör åt det hållet man kommer gående i trappen.Mode 5: “Vattenfall”. Tänder 2 steg i taget och försöker simulera ett vattenfall, uppifrån och ner. Om rörelse är aktiverad släcks det efter 5 sekunder. Färg ställs in i gränssnittet.Mode 6: Partymode! Hela trappan blinkar i regnbågens alla färger! Om rörelse är aktiverad så släcks det efter 5 sekunder.

MQTT (endast avancerade användare)

För de lite mer avancerade användarna har vi även skapat en version av programmet som istället för en webbserver använder MQTT. Även den koden finns på github men vi kommer inte förklara den närmare i detta inlägg.

Men den som är van vid MQTT borde ganska snabbt kunna lista ut vad som behöver ändras. Skickar och tar emot kommandon på formatet “PROGRAM, RÖRELSE, GRÖN, RÖD, BLÅ, VIT”; – Där program är valt mode, 0-6– Rörelse är 0 om den alltid skall vara igång, 1 om den startar vid rörelse– Grön är mängden grön färg. 0-255– Röd är mängden röd färg. 0-255 – Blå är mängden blå färg. 0-255 – Vit är mängden vit färg. 0-255

Läser in

Kul att du gillar vår blogg!

Skriv upp dig på vår maillista för att få allt det senaste från m.nu - Nya produkter, kampanjer och mycket mer!

Wohoo! Du är nu med på maillistan!