Skalor för folkdiktatur människor (3 / 6 steg)
Steg 3: Koden: seriell kommunikation.
Hur sker kommunikationen med vågen och dataconversion?
Vågen som jag använder är en KERNA PCB 6000-0. Den har ett läge där det kontinuerligt skickar 18 byte datablocks som innehåller vikten genom den seriella porten. Atmega8 buffrar 18 inkommande byte. Den sista överförda byten är alltid en radmatning (ascii 10). Så snart seriella erhåller radmatning (ascii 10), ett avbrott utlöses och koden växlar till rutinen avbrott. Denna rutin startas genom att avmarkera de variabler som behövs för dataconversion. Det börjar att läsa följetong bufferten. Det finns 18 byte i varje datatransfer, bara 9 till 12 byte innehåller den faktiska vikten. Dessa bytes lagras för konvertering. Alla andra byte är dumpad i en tillfällig variabel att tömma bufferten.
De lagrade byte innehålla 4 siffrorna av vikt som ASCII-tecken. Detta innebär att vi har att konvertera dem till rätt decimala värden innan vi kan göra några beräkningar med dem. Lyckligtvis kan detta göras mycket enkelt genom substitutions 48 från de inkommande värdena som varje ASCII-värde är 48 högre än decimalvärdet av samma karaktär.
Därefter multipliceras värdet av det första tecknet 1000, andra med 100 och tredje av 10. De tre resultaten läggs sedan ihop och fjärde värdet läggs. Detta slutresultat är ett heltal som innehåller vikten anges av skalorna.
När denna vikt är känt, det jämförs med önskad vikt i de viktigaste loopen och lysdioderna är inställda.