Vi håller med på med ett riktigt roligt elektronik-projekt på jobbet: Kaffeduva0.1 (egenpåhittat arbetsnamn). Jede har försett oss med en av deras kaffemaskinsprototyper och vi bygger in fjärrstyrning!
Systemet ska bestå av en Arduino Ethernet som tar emot instruktioner via ett API från t.ex. en iPhone-app, en kalender-ström (.ics), en Siri-proxy, och en massa andra system vi inte kommit på än.
I version 2 drömmer i alla fall jag om att någon form av robotarm matar fram nya koppar till maskinen, och i version 3 kanske någon form av leverans-system inom kontoret. Vi får se!
Maskinen kommer få en LCD från en Nokia 5110 där olika statusmeddelanden och animationer ska visas. LCDn kan matas med hexvärden för att visa grafik, och det saknas konverterare till Mac. Så jag byggde en i PHP.
Gör en bild med hög kontrast (så du ser lite vad du kommer få) och spara som .png. Vår display är monokrom, så min konverterare kollar snittvärdet mellan R, G och B och sätter ut antingen en svart eller vit pixel.
Ger den här koden:
char batman[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF0, 0x1F, 0x3F, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x0F, 0x20, 0xE0, 0xE4, 0xEB, 0xDF, 0xBF, 0xBF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x38, 0x38, 0xF8,
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80,
0xE0, 0xE0, 0xE0, 0xE0, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0xF8, 0xF8, 0xF8, 0xF8, 0x78, 0x38, 0x18, 0x18, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x7F, 0x3F, 0xE0, 0xC0, 0xE2, 0xFE, 0xFD, 0x9D,
0x0B, 0x8B, 0x89, 0x91, 0xB1, 0x01, 0x1F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F,
0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0xB8, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x80, 0xE0, 0xB0, 0x90, 0x98, 0xEC, 0xFF, 0xF8, 0xFD, 0xFF,
0xF9, 0xFB, 0xFB, 0xFB, 0xFB, 0xFF, 0xFF, 0xFF, 0xFB, 0xFB, 0xF9, 0xFB, 0xFF, 0xFE, 0xFE, 0xFC,
0xF8, 0xF8, 0xF8, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
Men, av någon anledning måste jag lägga till en rad 0×00 på slutet för att det inte ska läcka ut minne i form av pixlar längst ner till höger.
Edit: Jag löste buggen med den extra raden. För radbrytningens skull bröt jag isär hela strängen i 16 block breda rader, lagrade dessa i en array och imploderade arrayen på ‘, ‘ i slutet. Problemet var att jag lade till en ny rad när kolumnräknaren nådde 16, vilket såklart inte sker i sista raden.

