Bitmaps på LCD

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.

Denna PNG-bild:

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
};

Och det här resultatet:

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. :)

Jag och min VPS

Jag börjar känna mig rätt hemma i min VPS nu! Riktigt kul att ha! :)

Jag bytte jobb igen 1 februari och nya arbetsgivaren Duva känns riktigt bra. Samma sköna rytm men större projekt. Ägarna driver också Ember och därifrån kommer min VPS.

Än så länge har jag LAMP, Imapserver, webmail och fyra siter igång. Framöver blir det gitserver likt GitHub också! :)

Klocka

Denna veckas fredagsprojekt blev en klocka baserad på en smått ashäftig klocka vid namn QLOCKTWO.

Den berättar vad tiden är med ord utplacerade på en bricka. Bokstäverna tänds upp i rätt kombination för att visa klockslaget.

Nästa fredagsprojekt kanske blir en ny version med dagens datum också!

Svensk version

Engelsk version

Skara Filmfestival

Den 8 november startar Skara Filmfestival med en hel rad riktigt spännande filmer. Festivalen anordnas av Skara Bio Kontrast, som till festivalens 10-årsjubileum ordnat med en helt färsk (i skrivandets stund ca 10 minuter gammal) hemsida. Kolla in skarafilmfestival.se där man kan kolla på trailers, skriva kommentarer och läsa om föreningen.

Jag är sugen på att titta på bland annat Dog Tooth, och Rise of the Planet of the Apes.

Festivalen håller på mellan 8 och 17 augusti, i Skara

Eye-Fi Connect X2

Ny häftig utrustning i arsenalen: ett Eye-Fi Connect X2 – det mest uppkopplade minneskort du kan tänka dig. Det lilla kortet har på något magiskt sätt plats för hårdvara för att skapa en WiFi-uppkoppling (till förvalda WiFi-nätverk, eller t.ex. en iPhone) och kan sedan skicka bilderna över nätverket till Internet, datorn, ut på Facebook, in på Flickr eller var man nu kan tänkas vilja ha dem. För en prenumerationsavgift kan man få obegränsat med utrymme hos Eye-Fi själva för så kallad ”garanterad” backup (hur fasen man nu lyckas med det) och där kan alla ens framtida bilder hamna i orginalupplösning.

Jag gjorde en video där jag tar ett kort på mig själv som sedan skickas till datorn, och visas i ett automagiskt bildspel! Perfekt till bröllopsfesten/partyt, men man borde ha projektor då såklart. Håll till godo:

Smaka på orden

En rysk konstnär/artist som kallar sig ”morskoiboy” har skapat något helt unikt – och, i min mening, ganska fantastiskt. En maskin som låter dig smaka på dina ord, genom att bokstavstangenterna på morskoiboys egenhändigt utformade ”skrivmaskin” motsvarar en av 26 olika smaker. När en knapp trycks ner trycks en spruta ihop, och dess motsvarande smak-sirap skickas genom slangar till den härligt analog-digitala bildskärmen. Efter det fortsätter smakämnena genom kranen till glaset, och blandas med de andra bokstävernas smaker.

Det hela är ett riktigt imponerande hantverk, och ett både vackert och häpnadsväckande konstverk.

Se bilder och läs morskoiboys text om maskinen här

Nya saker

Denna sommar har varit präglad av nytt och spännande i mitt liv.

En Son!
Min son, Viggo, föddes den 21 juli kl. 13.18. Han vägde då 4025g, gick ner till 3825g, och är nu uppe runt 4600 eller däromkring. Det har varit lika fantastiskt som när Nora kom i oktober -08, men inte lika skräckslaget. Man springer inte lika ofta och kollar att han andas, liksom.

Nora är med och hjälper till så mycket hon kan. Jag tror hon känner sig mestadels delaktig istället för åsidosatt. Mina försök att ge henne extra mycket uppmärksamhet när Kicki ammar Viggo bidrar nog lite grann, men mycket av det har hon nog i grunden.

Kicki är tyvärr lite lidande. Hon får inte sova mycket, och jag kan inte ta över med Viggo som jag kunde med Nora. Nora ville inte ammas, så där kunde ju jag vara med och dela på matningen! Nu när Nora börjat på dagis igen får Kicki förhoppningsvis lite mer tid under dagen att vila, förutsatt att Viggo tycker det passar att vila då också.

Ett jobb!
Jag sa upp mig på The Farm i Lidköping (Stockholm) för att istället börja på Websolution i Skara. Det betyder att jag inte längre behöver åka buss och chefen sitter i samma lokal. Dessutom känner jag till Skara så mycket bättre än Lidköping, så lunchshopping och annat smidigt blir möjligt här på ett helt annat sätt än det var förut.

Jag har jobbat här sen i 1 augusti, men var pappaledig de första dagarna och har inte kommit igång ordentligt förrän den här veckan. Det kommer nog bli ännu bättre fart nästa vecka när chefen är tillbaka från Cypern-semestern.

På Websolution blir det webbprogrammering, iPhone-appar, design och projektledning. Vi är ett alldeles lagom litet och snart sammansvetsat team.

Ett spel!
Jag, min bror Magnus och våra vänner Robert och Thomas håller på att utveckla ett MMORPG! Jag ska inte avslöja för mycket, men kan hinta om att det är Fantasy och att det inte kommer vara någon direkt fokus på det grafiska.

Jag sköter själva programmeringen och övriga parter är idésprutor och hålla-koll-på-Micke-ansvariga. Vi har små möten så ofta vi kan, ca varannan onsdag, och ikväll är det dags igen. Våra idéer är både vedertagna och banbrytande.

Jag är övertygad om att det här spelet kan bli en rejäl hit på online-text-mmorpg-fältet. Tänk MUD + Prisonlife.

En motivation!
Jag har åter upptäckt min kroppsstorlek och har därför återuppbyggt min motivation att gå ner i vikt. Ni som läst på Nobless.se förr vet kanske att jag hade ett publikt vikt-diagram där.

Det var inför Kickis och mitt bröllop i fjol, där jag lyckades gå ner många kilo med hjälp av enbart LCHF. De kilona är tillbaka nu, och ska bort igen, men den här gången har jag en lite tyngre strategi.

  1. Jag går raska promenader till jobbet varje morgon, med så långa omvägar jag hinner.
  2. Varje måndag kväll går jag och Magnus till Skara Hälsostudio och kör Box i 1.5 timme. Det är brutalt och superbrännande!
  3. När chefen börjat lämna barn på dagis ska han ta med mig vissa morgnar till Petersburg här i Skara, där vi ska springa en runda.
  4. Jag är tillbaka på LCHF-regimen, dock med lite mildare restriktioner, så jag orkar med 1, 2 och 3.

Tillsammans tror jag dessa steg kommer ge en ganska bra effekt. Jag vet att jag kommer gå ner väldigt mycket precis i början, på grund av all vätska som lämnar kroppen i och med LCHF. Efter det kommer det plana ut lite, och sen börja falla snabbare igen, i takt med att jag orkar mer på träningen och orkar springa längre rundor med chefen.

Det som ger mig störst förhoppning är att jag redan börjat, och inte bara pratar. :)

Heldag offline

Igår kväll, efter en stund i soffan, gick jag in i dator-rummet och ”kollade läget”. Min telefon låg där, inkopplad med USB-sladden, och lös alldeles för sig själv. Datorns skärmsläckare hade redan passerat och skärmarna var svarta. Men telefonen lös!

Mitt autolås står på 5 minuter, och jag hade inte rört telefonen på minst två timmar. Lite konfunderad tryckte jag på ”hem”-knappen, men inget hände! Den har glappat lite ibland så jag tryckte en gång till, lite hårdare, men inget hände. Jag tryckte på lås-knappen, och det var samma sak där! Telefonen hade hängt sig!

Jag körde en tvingad avstängning genom att hålla inne både lås- och hem-knappen i några sekunder, och telefonen stängdes av. Så startade jag den igen. Någon halvminut senare plingade den till så där som bara en iPhone kan, och upplåsningsskärmen med bilden på Nora visades. Nu hajade jag till ordentligt! Bakgrunden på lås-slidern, med texten ”lås upp” ska animera! Textens ljusare del ska röra sig från vänster till höger. Men på min telefon stod animationen helt stilla!

Jag stängde av telefonen och gick och la mig.

Sen vi kom hem från BB med Viggo har vi grämt oss över hur tidigt man måste gå upp för att hinna till kärnsjukhuset i Skövde och upp till BB-avdelningen innan tidningsfotograferna åker där ifrån. De har bestämt sig för att vara där alla vardagar mellan 8.30 och 9.00!

I morse vaknade vi redan 07.20, vilket är första relativt tidiga morgonen på några veckor. Viggo låg sträckt över Kickis bröstkorg, och mellan mig och Kicki låg Nora och sov djupt. Vi räknade ut att om vi skulle ta oss till BB i tid för att fota hela familjen, så behövde vi vara klara på 40 minuter. Sagt och gjort, vi kastade oss ur sängen, nästan slängde på barnen kläder, slet av mitt skäggstubb, och trädde på Kicki en fin kjol och tröja…

Nej, det gick inte riktigt till så. Vi turades om att tjata på Nora om att om hon inte tar på sig en ny blöja och klär på sig, så får vi åka och ta kort utan henne. Sen ammade Kicki Viggo och jag rakade mig. Efter det fokuserade Kicki på sitt hår och sina kläder, medan jag ilsket muttrandes testade att starta om min telefon några gånger. Efter att vi bestämt att Nora väl får vara utan flätor när hon inte kan låta bli att busa sönder dem varje gång Kicki kommit halvvägs, så lade jag min telefon i fickan, med skärmen lysandes på den frysta lås-skärmen och så gick vi ut.

Vi satte ÖVNINGSKÖR-skylten på bilens baklucka, så jag kunde köra, och åkte mot Skövde. Vi hann faktiskt i tid! 08.49 stegade vi in i väntsalen för BB-vård i hemmet, där två fotografer turades om att fota en nyförlöst familj.

När vi fotats av fotografen som skickar bilder till SKLT (skaratidningen) knallade vi lugna och nöjda ner till bilen igen, och åkte till McDonalds för en ”riktig” frukost. Efter det parkerade vi vid Elins Esplanad, där jag och Nora gick ner till Clas Ohlsson och köpte två barn filmer. Nora hittade ett par Hello Kitty-hörlurar, men gick ofattbart nog med på att vi köper dem nån annan dag! Hon har ju faktiskt inget att lyssna på med dem.

När vi väl hittade Kicki igen, som inte alls det stannade på Kappahl och Lindex, som hon sa, så åkte vi direkt hem till hennes föräldrar och åt lunch. Det serverades riktigt smaskig stekt falukorv, dillsås och potatis.

Efter lunchen for vi direkt till Citygross där jag sprang in och köpte ett sex-pack Cola, och en gul citron-mousse-tårta med choklad, och sen bar det av till The Farm i Lidköping för adjö-fika á là micke! Vi lät Nora vara kvar hos sina morföräldrar så hon kunde titta på en av filmerna vi köpte, så när vi var klara i Lidköping åkte vi dit igen. Där fastnade vi nu en gång till, denna gång för kvällsmat i form av grillad korv med bröd.

När vi väl kom hem var min telefon nere på 9% batteri, och klockan var 19.40. Telefonen visade fortfarande glatt den frusna lås-skärmen.

Då och då under dagen har jag kommit på mig själv med att gräma mig över att jag inte kan kolla om det kommit nåt nytt mail, om nåt hänt på Google+ eller Facebook, men sen har jag ändå stillat mig i att det varit rätt skönt att vara offline! Jag tror nog jag ska testa det lite oftare.

Nu är jag i färd med att återställa telefonen till iOS 4.3.3. iOS 5.0 beta 4 är säkert orsaken till att den hänger sig, och dessutom funkar ju inte Google+-appen i iOS 5 än! Jag ska nog vänta till den officiella releasen innan jag installerar 5.0 igen.