I programmering snakker man gjerne om at et språk er høynivå eller lavnivå, der lavere nivåer ligger nærmere hardware i en eller annen forstand. Vi har vært innom dette før, for eksempel i artikkelen om
assembler, som er rimelig lavnivå, ettersom det krever at man kjenner en del detaljer om prosessoren man programmerer for. Python, som jeg bruker mye, ligger i motsatt ende av skalaen, ved at det tar hånd om en del detaljer for deg uten at du trenger å tenke på det. Du kan for eksempel leve lykkelig med python ganske lenge uten å vite noe særlig om datatyper og minne og slikt, i allefall hvis du ikke prøver å gjøre altfor avanserte ting. I tillegg kommer python med såpass mye innebygget magi i det som kalles standardbiblioteket at du kan leve et temmelig beskyttet liv.
Elektronikk, som jeg fra tid til annen har prøvd å pusle med, er naturlig nok temmelig lavnivå. For eksempel har jeg gått til innkjøp av en e-papir-skjerm og en Arduino, som jeg prøver å koble sammen med en Raspberry Pi for å sette opp et dørskilt som kan fortelle mine kollegaer hvor jeg er når jeg ikke er på kontoret, og jeg ser at jeg antagelig ikke kommer utenom å forholde meg til ting på et noe lavere nivå enn jeg vanligvis er komfortabel med. For eksempel, for å skrive
0x03 til register
0x08 og
0xA1 til register
0x09 trenger du bare å følge denne hendige oppskriften:
Nå er det naturligvis ikke fullt så ille som at jeg faktisk må passe på klokken selv og sette piner til høy og lav på riktig tidspunkt og alt det der, ettersom det finnes et SPI-bibliotek for Arduino, men det ligger likevel an til å bli litt grumsete. En interessant ting som jeg ikke hadde tenkt over på forhånd er for eksempel at skjermen har rundt 50000 punkter, mens arduinoen jeg kjøpte bare har 2K minne, så jeg kan ikke holde et helt bilde i minnet. Dermed må jeg oppdatere skjermen linje for linje, eller noe slikt. Intrikate greier.
Planen er omtrent som følger:
- For hver avtale i kalenderen min lager jeg et sort-hvitt bilde med tekst
- Bildet må gjøres tilgjengelig på Raspberry Pien, sammen med klokkeslett for avtalen
- Hvert minutt vil Arduinoen spørre Raspberry Pien, over I2C, om den skal oppdatere bildet
- Hvis ja sender Raspberry Pien en linje av det nye bildet
- Arduinoen sender linjen videre til skjermen, over SPI, og skriver den nye linjen til displayet
- Gjenta de to forrige operasjonene til hele bildet er overført
Rapport og kildekode følger hvis det blir vellykket.
Comments