Arduino Adafruit Gemma Utvecklingsmiljöer

Att hitta en vettig utvecklingsmiljö är viktigt för att kunna felsöka och få bra hjälp genom automatisk komplettering av programmeringsspråkets specifika termer.

Kollar igen efter en annan texteditor för att skriva till arduino kretsar. Att leva utan automatisk komplettering känns b vilket är vad Arduino IDE erbjuder så jag kollar efter andra möjligheter. Arduino har samlat en lista på sin hemsida. https://playground.arduino.cc/Main/DevelopmentTools

Visual Studio Code Extension for Arduino

Hade VS code installerat för att jag gjorde något javascriptigt tidigare. Det var lätt. I extentionsmenyn hittar jag Arduino och PlatformIO (vilket jag sett marknadsföras på arduinos hemsida). Den hittar rätt kort och så kan jag välja port vilket verkar fungera för att jag får ingen felkod när jag väljer rätt COM port.

Problem

Har inte ännu listat ut hur jag ska skicka över sketcherna. När jag kör det kommandot i körfältet så får jag inte någon respons på att det har skickats över. Har alltså inte lyckats att få sketcherna att komma över till kretsen vilket gör det meningslöst. Testade även PlatformIO och har samma problem där med att kortet verkar identifierat men gör ingen ansträngning för att skicka över koden.

Jag låter det vara och går över till nästa. Det finns säkert någon som har skrivit ner hur man gör men jag har inte hittat något just nu i skrivande stund.

Andra evaluering

Har testat lite till och kommit fram till att jag överger iden att använda vs code. Kom så långt att skriva de konfigurationsfilerna som vs code vill ha och sedan få felmeddelanden om saker som jag inte väntat mig.

Maria Mole

En öppen källkods utvecklingsmiljö som jag har använt för något år sedan när jag gick igenom hela Arduino boken som följer med basc kittet som arduino säljer. Jag minns att mariamole var trevlig. Deras hemsida är http://dalpix.com/mariamole. De finns på github och sourceforge.

Problem

Kan inte välja rätt kort. Försöker komma på hur jag ska få in GEMMA som ett alternativ. Borde såklart förstå hur man gör för att lägga till de hårvaruspecifikationerna genom att länka in det i byggfilen eller komandot som körs. Har ännu inte stött på hur man gör detta men det är en viktig del i att välja en annan editor särskilt om jag ska kunna växla till vilken som helst.

Jag är nu alltså ett steg längre ifrån ett funktionellt IDE än vad jag kom till med VS code. Just nu är alltså arduino IDE det enda som fungerar.

Sloeber: the Arduino Eclipse IDE

Verkar lovande då en laddar ner det som ett helt paket som innehåller allt och startar utan installation. Eclipse börjar som vanligt med att fylla på rejält med grejer under första uppstarten. Laddas ner här: http://eclipse.baeyens.it/stable.php?OS=Windows

Samma länk som jag fick lägga in i Arduino IDE som fanns beskriven på adafruits hemsida: https://adafruit.github.io/arduino-board-index/package_adafruit_index.json

Nu kan jag välja adafruits grejer. Kanske från den json filen kan jag utläsa vad jag behöver för att få igång Mariamole. I jasonen hittar jag att den länkar till denna filen: https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.9.tar.bz2

Det här är besvärligt med att jag inte får igång adafruit produkterna. Jag gjorde samma sak fast med ett arduino uno med Soleber (eclipse) vilket fungerade direkt. Det är alltså dessa ”smarta” lösningar som adafruit har gjort med sina produkter som ställer till det för mig och gör processen långsammare. Målet är i och för sig att programmera ATtiny85 kretsar över arduino uno enheter. Vilket inte är en uppsätting enheter som jag har nu tillgång till just nu.

Testar att byta till Flora dvs ATmega32U4.

Fungerar fint med arduino uno. Nu har jag inte testat men jag ser de inställningarna i Sloeber på min linuxinstallation som inte syns i Windowsinstallationen var gång jag ska inleda ett nytt projekt. Det är märkligt.

UECIDE

Ännu en open source IDE dock så är den sedan tidigare obekant för mig. Ser komplett ut. Har ATmega32U4 men inte precis adafruit flora. Testar de andra varianterna. Det stora problemet generellt med flora är att alla deras guider baseras på Arduino IDE.

Det som liknade närmast med samma chip är https://store.arduino.cc/lilypad-arduino-usb

Men det fungerade inte. Vad besvärligt det är med adafurit gemma och flora.

Oj den var liten och portabel med full funktionalitet. Java baserad. Har lite olika varianter för attiny85.

MINIBLOQ

blockbaserad programmering http://blog.minibloq.org/p/download.html har stannat av för att de håller på med sin kickstarter http://www.codewithroot.com/

Atom med platformIO

PlatformIO är mycket bättre integrerat med atom än med VScode.

http://platformio.org/get-started/ide?install=atom

https://atom.io/

biicode

 

Programmera ATtiny85 via en arduino

etta är en guide för att föra över kod till attiny från start till slut med tankar kring processen.

Vad du behöver är en arduino, en ATtiny, sladdar, fyra LED lampor i olika färger, resistorer som passar respektive LED och en Kondensator 10uF (eller 100uF och har du inte det så finns det andra mer komplexa lösningar att läsa om här).

Målet är att få igång ett vanligt blinkprogram på ATtiny85. Detta känns som absolut standard för alla arduino program och det är där man börjar innan man ger sig på mer avancerade projekt.

Det finns väldigt mycket om denna enhet och samtidigt väldigt lite. Anledingen till att det finns lite är för att det är upp till dig att inse att du kan ta de flesta projekt och sedan krympa ner det till ATtiny85:s formfaktor. Dessutom så är inte denna ATtiny ensam härre på teppan för mindre styr enheter utan ett av många olika val. I vårt fall så har vi valt dett chip för att det har ett gott ryckte och att den har en låg kostnad (<10kr per enhet). Länk till tillverkaren produktblad http://www.microchip.com/wwwproducts/en/ATtiny85. Produktbladet som hör till fån samma sida (pdf 3,7 MB).

Här finns det att läsa det mesta om enheten. https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/ATtiny_x5.md

x5 pin mapping

1 Förbereda arduinon

Eftersom att ATtinyn saknar de delar för att prata med datorn så är den vanligaste metoden att använda en arduino som programmerare. Alternativt en specifik enhet som man kan köpa som passar exakt det chip som man tänker programmera. Denna typ av enhet kallas för ISP vilket är kort för In-System Programming.

1.1 installera arduino som isp

Ladda upp exempelprogrammet till arduinon. I de flesta android IDEna finns ett antal exempel varav ett av dem heter Android as ISP.

I mitt fall är det en arduino uno som kommer att agera isp som jag för över detta programmet till.

Ställ in arduino/genuino uno
Porten exempelvis COM17 (brukar stå vilken som gäller)
Programemrare AVRISP mkII

1.2 Koppla in så att du ser hur ISPn arbetar

Följ exempelprogrammets instruktioner med att sätta in pins. Det är nämligen så att det finns tre stycken lampor som man kan koppla in för att se hur det går för programmeringen. Jag har citerat där det står nedan:

/ Put an LED (with resistor) on the following pins:
 / 9: Heartbeat - shows the programmer is running
 / 8: Error - Lights up if something goes wrong (use red if that makes sense)
 / 7: Programming - In communication with the slave

Förklaring för vad detta innebär. Heartbeat är för att visa att rätt program är igång och det ser man genom att lampan pulserar. En av lamporna visar om det går fel i processen. Den sista visar när kretsen programmeras och blinkar medan överföringen till ATtinyn via arduinon sker.

Ett tips när du kopplar in led lamporna är att använda jorden bredvid pinsen. Denna jord på arduino kortet är markerad med GND och är mellan pinhål 13 och pinhålet med texten AREF. Det finns tre sammanlagt stycken GND på kortet. Vilket kortar ner i alla fall en sladd.

1.3 koppla sladdarna mellan ATtinyn och arduinon

För att ATtinyn ska kunna få program från datorn behöver den kopplas in på ett speciellt sätt till arduinon. Följ dessa anvisningarna och titta på fotot samt illustrationerna som vägledning.

Sätt en 10 uF (eller 100 uF) mellan GND och RESET.

Koppla sedan upp attinyn med sladdar till de olika ingångarna så här. Där jag har illustrerat med pilar (->)  från attinyn vart respektive pin ska kopplas till för ingång på arduinon.

ATMEL ATTINY85 -> ARDUINO

                  +-\/-+
         D 10 <- 1|    |8  -> 5V
                 2|    |7  -> D 13
                 3|    |6  -> D 12
          GND <- 4|    |5  -> D 11
                  +----+

High low tech har gjort en fin illustration (om du är nyfiken har de även gjort en guide som går att läsa här på highlowtech. Tyvärr verkar deras verksamhet ha upphört).

Nu ska attinyn vara redo för att ta emot mjkvara via arduinon.

2.1 Ställ in arduinos IDE inställnigar

Öppna inställningsfönstret och fyll i följande

Kryssa i medelanden under uppladdnig.
Sätt varningar till standard.

Klistrar du in denna länken till ATtiny drazzy ATTinyCore: http://drazzy.com/package_drazzy.com_index.json

arduinoIdePreferences

2.2 installera attiny

Gå in i boarddsmanager.
Sök på attiny och klicka installera.

boardsManager

2.2.1 Tips på vart man hittar länkar om ovan inte fungerar

På arduinos hemsida länkar de till en lista med dessa jason filer för alla enheter som de känner till som det finns stöd för. Tänk på att ATtiny85 kallas även x5 och tillhör utbudet ATtinyCore. Går man in i variants i biblioteket för attiny hittar man att David A. Mellis har skrivit det mesta för just ATtiny85 och daterats till 2007 men många har gjort förbättringar som inte någon har tagit cred för.

https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls

I mina efterforskningar hittade jag att den som är verkar som nuvarande huvudutvecklare för ATtiny heter Spence Konde och kallar sig Dr Azzy. Spence underhåller ATtinyCore som är en heltäckande samling av alla de senaste biblioteken för alla attiny chip. Den senaste versionen av ATtinyCore i skrivande stund är 1.1.4.

2.2.2 Cosa är ett annat alternativ

Jag vet inte vad Cosa är fullt ut men det är en person som har gafflat Dr Azzys arbete och gjort sin egna grej (öppen källkod ger sådana möjligheter). Cosa beskrivs som följande på deras hemsida Cosa is an object-oriented platform for Arduino. Får kolla in det en annan gång. Denna Mikael som är huvudutvecklare av denna tolkare verkar ha jobbat på ericsson länge. Om det har någon betydelse.
https://github.com/mikaelpatel/Cosa

Cosa: https://raw.githubusercontent.com/mikaelpatel/Cosa/master/package_cosa_index.json

 

3 Bränna bootloader

Chippet är ifrån fabrik instruerat hastigheten till 1 Hz. Vilket inte gör så mycket tycker jag. Det verkar vara ett krav att ”bränna” om den. De flesta väljer 8 Hz.

3.1 Bränn bootloaderinställningar

Det finns otroligt många alternativ. I arduino IDE välj från menyn. Samt Man bränner till internal.

Board: ATtiny25/45/85
Timer 1 Clock: CPU
B.OD.: B.OD. Disabled
LTO (1.6.11+ only): Disabled
Chip: ATtiny85
Clock: 8 MHz (internal)
Port: COM17 (eller vad du har för något just nu)
Programmer: Arduino as ISP

När allt ser ut så klicka på Burn Bootloader för att ”bränna” inställningarna.

arduinoIdeTools

4 Nu kan du skicka över skisser

Exempelvis blinkaren. Tänk på att ändra i exemplet med blinkaren till en port som finns på kortet D0-D5. Så om det står internal eller 13 så byt det till en siffra mellan 0 och 5 (på bilden kör jag med 3).

5 Andra alternativ

Här kommer nu sådant jag har sammanställt vad var inställningsmöjlighet innebär. Inställningarna för bootloadern som jag angav tidigare är inte satt i sten om man vet vad man gör. Jag har en del kvar att reda ut för att förstå allt själv. Min förhoppning är att du har nytta av detta för att kunna själv fortsätta utreda vad som kan förbättras.

5.1 Speciella Funktioner

Board: ATtiny25/45/85

Inga konstigheter.

Timer 1 Clock: CPU

Möjliga val Val att göra:
64MHz
32MHz
CPU (verkar vettigt men jag vet ej varför)

B.OD.: B.OD. Disabled

Finns frya val
B.O.D. Enabled (2.7v)
B.O.D. Disabled
B.O.D. Enabled (4.3v)
B.O.D. Enabled (1.8v)

B. O. D. står för brown out detect vilket på svenska blir uppmärksamma uppbränning. Jag skulle tolka det som en brandvarnare men jag kan ha fel. Det är märkligt att detta är frånslaget som standard nu när det kanske skulle vara bra att ha det tillslaget på något av lägena. Jag översätter rakt av från en engelsk text detta:

Brown-out detection övervakar kontinuerligt Vcc och är kopplat till chippets reset state (BOR) om strömmen går under ett visst läge. Det är en god ide för långsamt stigande nätaggregat eller när det är förväntat att strömmen kan falla under den mängd energi som krävs för att driva chippet på den frekvens den är ställd till. Med BOD frånslaget kan det hänga chippet till det att chippet manuellt återställs. BOD ökar strömförbrukningen något vilket kan vara dåligt för lågenergilösningar.

Studerar en alternativen 1.8v, 2.7v, 4.3v så undrar jag på vilket ”håll” som detta tillstånd för att de skulle agera som voltgränserna skulle slå igång. Jag skulle anta att exempelvis om en väljer 1.8v så slår reset igång när strömmen faller till 1.8v. Tänker man på det så står det inte specifikt så det skulle kunna innebära att när Vcc strömmen faller med 1.8v så utlöses reset. Jag har sett flimer där enheten kan trimmas ner till mycket liten energiförbrukning, till 0.2v och 0.01v. I sådana lågenergifall skulle en reset inte slås på eller kanske slås på i onödan av att strömmen går under den punkten direkt efter att strömmen slås till om en exempelvis har ett 3.7v batteri. Detta behöver utredas.

LTO (1.6.11+ only): Disabled

Jag undrar om versionen gäller arduino IDE. Det skulle betyda att man väljer disabled när man använder använder eclipse/atom men det verkar konstigt.

Val:
Enabled
Disbabled

Chip: ATtiny85

Inga konstigheter

Clock: 8 MHz (internal)

Det är viktigt att välja internal för external i det här fallet är arduinon vilket blir en missmatchning som kan kanske orsaka att något går snett. Är det ett projekt som ska hålla tiden med watchdog så har jag sett att 16 Hz använts. Kan vara det här man ändrar om man har någon speciell kristall som jag läst om i förbifarten.

Internal:
8 MHz
1 MHz
16 MHz (PLL clock, x5, x61 only)

Det är konstigt att 20 MHz inte finns med men det står med i specifikationerna för kortet men det skulle kunna vara så att det kommer när väl någon har lyckats att skriva in det i biblioteket. För alla funktioner som är här kommer ju ATtinyCore.

Port: COM17 (eller vad du har för något just nu)

Välj den som passar bäst. På linux är det exempelvis oftast /dev/ttyACM0

Programmer: Arduino as ISP

Inga konstigheter

5.2 Hintar mumbo jumbo

I specifikationerna kan man läsa om stöd för en del andra funktioner. Men de är inte valbara vad jag kan se i menyerna. Dessutom så ligger de utanför mitt kunskapsområde. Jag har med dem för att om jag en dag förstår dem eller uppdaterar denna guide när biblioteken uppdaterats att innehålla dessa.

I2C i kombination med hårdvaru USI i Wire biblioteket. Oklart vad det är för något.

Stöd för SPI genom biblioteket. USI jobbar med DI/DO i mastermode. Fungerar tydligen ej med MISO/MOSI. Slavläge är DI MOSI och DO MISO. Undar om de har skrivit fel och DI samt DO är D 0 respektive D 1 pinsen.

Seriell support via mjukvara. Använd interrupts. TX är AIN0, RX är AIN1. Det står att en får tänka på att kommandot Serial.begin() gör dessa pins oanvändbara för annat. Dessutom ska man tänka på att det blir fel om man läser och skriver samtidigt vilket betyder att det är någon sorts envägskommunikation med mjukvaru seriell kommunikation (”the usual SoftwareSerial library” står det).

För att seriell mjukvarukommunikation ska fungera bra kan en behöva kalibrera den interna oscilatorn eller pll klockan (det finns sketcher för detta). Det har att göra med att klockan är kalibrerad till +/- 10% i de flesta fall medan seriell kommunikation bara fungerar med ett fåtals procents avvikelse.

6. Andra resurser om detta

Genomgående har jag refererat till ett antal andra som du kan gå tillbaka till och läsa mer i.

Vill du se film så rekomenderar jag denna: https://m.youtube.com/watch?v=c8andV3OWr8

Tre i rad med arduino adafruit [skiss]

Iden är att göra ett fyra i rad spel med pixellampor och tryckknappar. Samtidigt som jag går igenom hela processen av att genomföra projektet så kommer jag att dokumentera så mycket som möjligt för att göra någon typ av hänvisning för framtida projekt. I projektet har jag också till uppdrag att utreda vad det finns för utvecklingsmiljöer.

Hårdvaran som jag har att tillgå är en adafruit flora, en adafruit gemma, passande 3.7V 400mAh batteri och 3.7V batteriladdare. En adafruit neopixel ring, ett antal adafruit flora neopixel. Diverse tryckknappar, sladdar. Det är inte meningen att jag ska använda allt men det formade iden för vad jag kan göra.

Beskrivning av Tre i rad spelet

Spelarna ska kunna turas om att lägga och flytta sina pjäser till det att spelet är över.

När man har valt 3 stycken lampor var så börjar ett strategist spel där man flyttar från det ena till det andra. Man klickar då på platsen man vill flytta ifrån till den nya platsen. Till det att en spelare har fått tre i rad.

Spelaren vars tur det är ska dens lampor ska blinka. Det kan vara så att första brickan läggs ut slumpmässigt för att göra spelet intressantare.

När man flyttar en av sina lampor ska man klicka först på den som man ska flytta och sen på en tom plats på brädet. En ogiltig plats avbryter draget och spelaren får välja om.

Teoretiskt schema över spelet där 0 betyder tom, x är spelare 1 och y är spelare 2 (som har segrat).

0 x y
0 x y
x 0 y

Adafruit flora

Drivrutiner till windows hämtas på: https://github.com/adafruit/Adafruit_Windows_Drivers/archive/master.zip

https://learn.adafruit.com/adafruit-arduino-ide-setup/windows-setup

FRDM-KL46Z

Ansluta via USB

Det finns två mini-usb ingångar. En för ström antar jag och en för programmering.

Kopplar jag in den i datorn så monteras en disk med en html som länkar till: http://mbed.org/device/?code=022002038C09DE7771F523AF

Hittar hintar med information på nätet om att de lägger filer i den disken sedan så magiskt körs dessa kommandona.

Det är intressant för att chippet är gjort av hittar information på http://www.pemicro.com/products/products_find.cfm som är hjälpsam med att identifiera chippet. Det står NXP (former Freescale) vilket jag sett innan men det var skönt att läsa. Har hittat att man kan köpa dessa korten för ungefär 200kr om man kan få tag på dem i och med att tillverkaren blivit uppköpt.

Äntligen en guide

Illustrated Step-by-Step Instructions: Updating the Freescale Freedom Board Firmware

Fast den verkar oanvändbar. citerar which use a mbed bootloader which is different and does not allow to upate the bootloader. Vilket innebär att denna bootloadern är låst vilket är tråkigt att läsa. Men som tur är så har personen skrivit mer här: https://mcuoneclipse.com/2016/06/26/how-to-recover-the-opensda-v2-x-bootloader/

Schema för hur kortet ser ut

https://developer.mbed.org/platforms/FRDM-KL46Z/

Vad menar de med Arduino headers? Är den som en arduino sheild samtidigt som att det är ett kraftigare chip än en vanlig arduino?

Är uppdatering av kortet nödvändigt?

Eller jag ser att det finns länkar för att göra detta.

Jag gick med på att gå med i mbed hemsidan. Det är lite läskigt. Jag tänkte på den länken på kortet att den hade någon innebörd som gjorde kortet unikt det står ju ordagrant device och code i adressen. http://mbed.org/device/?code=022002038C09DE7771F523AF

Första gången jag öppnade html filen så trode jag att jag skulle möta en manual eller liknande inte att jag skulle skickas iväg utanför min dator och uppge att enheten är aktiv. De har ju säkert spårat mig fullt ut vad jag har för maskin, stad, webläsare och allt annat och kopplat det till enheten. Sjukt smart.

Tänk att den htmlfilen som ligger på varje kort är unikt identiferbart och registreras såklart när man klickar på det och krävs för att ladda ner mjukvaran. Detta är väldigt annorlunda från exempelvis arduino. Denna platformen är uppenbarligen skyddad på alla sätt.

arduino projekt 02 samt 03

Går igenom boken arduino projects book som följer med arduino starter kit igen. För något år sedan gjorde jag alla övningar (2015) och skrev en handledning till det femte projektet då. Jag tyckte att boken var bra för att den gick igenom var komponent.

Projektet ska föreställa en rymdskeppspanel. Genom att trycka eller hålla inne en knapp så ändras lamporna. Alla komponenter är kopplade separat från varandra på vars en digital ingång.

Konstigt nog så upplever jag att koden ger ett annat resultat än vad de skriver i boken. Det är säkert korrigerat i nyare böcker. Gröna lampan ska lysa i ursprungsläget och sen släckas samtidigt som de röda led-lamprona blinka om vartannat när man trycker på knappen.

int switchState = 0;

void setup() {
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(2, INPUT);
 
}

void loop() {
 switchState = digitalRead(2);

if (switchState == LOW) {
 digitalWrite(3, LOW);
 digitalWrite(4, HIGH);
 digitalWrite(5, HIGH);
 
 }

else {
 digitalWrite(3, HIGH);
 digitalWrite(4, LOW);
 digitalWrite(5, HIGH);

delay(250);

digitalWrite(4, HIGH);
 digitalWrite(5, LOW);

delay(400);
 }
}

Så ser min kod för att det ska fungera rätt. Något kanske växlar LOW och HIGH jämfört med hur boken är skriven. Jag har testat koden på två olika arduino Uno enheter och får rätt resultat var gång.

Samma sak gäller då projekt 04 att HIGH betyder att lampan är av. Koden jag skrev för projekt 04 loveMeter kanske inte kan användas rakt av. Jag har behållit lamporna på samma plats som i projekt 03 och därför ser koden annorlunda ut. Kolla in for loopen i koden och vart pinsen är deklarerade så syns det jämfört med boken.

const int sensorPin = A0;
const float baselineTemp = 20.0;
void setup() {
 Serial.begin(9600);
 for(int pinNumber = 3; pinNumber <6; pinNumber++){
 pinMode(pinNumber, OUTPUT);
 digitalWrite(pinNumber, HIGH); // HIGH släcker lampan
 }
}

void loop() {
 int sensorVal = analogRead(sensorPin);

Serial.print("Sensor Value: "); // + sensorVal);
 Serial.print(sensorVal);

float voltage = (sensorVal/1024.0) * 5.0;

Serial.print(", Volts: ");
 Serial.print(voltage);

Serial.print(", Degrees C: ");

float temperature = (voltage - .5) * 100;
 Serial.print(temperature);
 Serial.println();




if(temperature < baselineTemp){
 digitalWrite(3, HIGH);
 digitalWrite(4, HIGH);
 digitalWrite(5, HIGH);
 } else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
 digitalWrite(3, HIGH);
 digitalWrite(4, HIGH);
 digitalWrite(5, LOW);
 } else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
 digitalWrite(3, HIGH);
 digitalWrite(4, LOW);
 digitalWrite(5, LOW);
 } else if(temperature >= baselineTemp+6){
 digitalWrite(3, LOW);
 digitalWrite(4, LOW);
 digitalWrite(5, LOW);
 }
 delay(1);
}

Jag går mest igenom grejerna för att få en känsla för koden så jag har inte lagt någon energi på hur den ser ut. Det var lätt att ställa in serial monitorn i eclipse. Jag la också till en Serial.println(); för att få en ny rad istället för att avläsningsdatan springer oläsligt i sidled som den gör i boken istället för neråt. Det skulle utan tvekan gå att optimera koden till bara en Serial.println() istället för sju printsatser.

Lampan lyser för att temperaturen i rummet är tillräckligt hög (+22 grader C).