Projekt til Embedded 2
Det går ud på at i det smarte hus kan man styrer lysets farve med en keypad, keypadden skal pladseres på MEGA2560 sammen med en display, når man er færdig med at indtaste lysinformation (RGB) bliver den sent over seriel til et uno board.
Elementer der skal implamenteres:
- LCD til information der bliver indtastet
- Keypad der skal være bruger indtast
- RGB LED der skal outputte lyset med informationen
Ekstra:
- Kører informationen over seriel til et UNO board der så for led'en til at lyse
- Et menu system til LCD panelet
Der skal bruges:
- Arduino UNO
- MEGA2560
- 1602a lcd arduino
- 10k potentiometer
- Membraneswitch module (Keypad)
- Knap
- 3x 330Ω modstande
- RGB LED
- Breadboard med nok ledninger
- Kabler og udstyr til at skrive og strømfører til Arduino UNO og MEGA2560
Det software der er inkluderet i dette projekt installeres på MEGA2560. Yderlig skal der bruges ProjektJoachimHueSlave som skal kørers på Arduino UNO. Projektet inkludere en README.md der forklare kun dens opsætning de andre enmer er i denne README.
Pin layout kan ses for MEGA2560 Pinout MEGA2560
Billede af opsætning:
| LCD | Board | PORT |
|---|---|---|
| VSS | GND | |
| VDD | 5V | |
| V0 | Pot* | |
| RS | 6 | PH3 |
| RW | 7 | PH4 |
| E | 8 | PH5 |
| D4 | 22 | PA0 |
| D5 | 23 | PA1 |
| D6 | 24 | PA2 |
| D7 | 25 | PA3 |
| A | 5v | |
| K | 5v |
*til det tredjeben på potentiometeret
RS til D7 kan indstilles til ønskede porte og pin i filen lcd.h
| Keypad | Board | PORT |
|---|---|---|
| 1 | A8 | PK0 |
| 2 | A9 | PK1 |
| 3 | A10 | PK2 |
| 4 | A11 | PK3 |
| 5 | A12 | PK4 |
| 6 | A13 | PK5 |
| 7 | A14 | PK6 |
| 8 | A15 | PK7 |
| Knap | Board | Port |
|---|---|---|
| 1 | 12 | PB6 |
| 2 | GND |
Porten er indstillet i main.c Init funktion og kører på Pin Change Interrupt Request 0 (PCINT0_vect).
| MEGA | UNO |
|---|---|
| GND | GND |
| TX0 | RX0 |
TX porten er indstillet i USART.c i hovede projektet.
ProjectJoachimHue er beregnet til at kører på MEGA2560.
Programmet er opsat med en Init funktion der skal sørge for at lcd, keypad, USART og en knap er opsat korrekt med den rigtige konfiguration.
En menu er det første der bliver vist så der er mulighed for at udvide programmet til at have flere funktioner end ColorInput.
ColorInput er hovede elementet i dette program, hvor man for lov til at indtaste værdien for hver af de 3 farver. Her ses et Flowchart af ColorInput:

Ud over at kunne indtaste sin egen farve kode kan man bruge knappen Til at skifte til nogle hardcoded farver.
ProjectJoachimHueSlave er beregnet til at kører på Arduino UNO.
Programmet er opsat med en Init funktion der skal sørge for at RGB LED og USART er sat rigtig op.
Hvis man gerne vil udvide hvad dette board kan kan det tilføjes til ReceiveData switchcase der switcher på hvad der bliver modtaget, se mere i serial forbindelse for mere information om forbindelsen mellem de to board.
Forbindelsen er designet med et forbogstav og derefter en bestemt mængde bytes f.eks S som bliver brugt til at signalere et lysskifte og derefter 9 bytes. Hvis man ønsker at udvide projektet kan man tilføje sin egen funktioner og resevere en char mere.
En menu vil blive vist med en velkomst besked og nogle muligheder men kan rulle ned på menu'en ved at taste # på keypad'en og rulle op ved at taste *. ved at trykke på det viste tegn kan man gå til det menu punkt, i denne versions tilfælde er det kun A (Custom color) der har funktion.
Der vil på displayet blive vist:
Color:
Red:
Her vælges hvor stærk den røde farve skal blive fra 000 til 255 der skal indtastet tre cifre, dette gøres også for blå: Blue og grøn: green.
Der skal skrives 3 cifre til hver farve.
Knappen kan trykkes når som helst i programmet og det vil sende en forudbestemt farve kode over serielforbindelsen, hvis man trykker igen vil den sende den næste farve.
Efter indtastning af farver kan der ses:
No color set,
Error: X
Hvis X er -1 er det fordi en af indtastningerne ikke er et tal.
Hvis X er -2 er det fordi en af indtastningerne ikke er inden for 0 til 255.
LCD Cursor'en blinker ikke det rigtige sted:
Reset MEGA2560
Hvis der ikke bliver skiftet farve på led når alle farve værdier er indtastet korrekt kan der laves følgende test:
For at se om man har installeret projektet rigtigt kan der gørers følgende:
Test af seriel tranmission med USB:
- Der skal bruges et USB kabel til MEGA2560
- Kablet sættes til PC'en og til MEGA2560
- Åben en terminal på PC'en
- Og tilslut med Default settings til COM porten der bruges
- Indtast de tre farvekoder
Test af seriel transmission med Logic analyzer:
- Tilføj logic analyzeres jord til breadboardets jord.
- Tilføj logic analyzeres data0 til en ledning der går fra TX0 på MEGA2560
- Tilføj USB mellem logic analyzeren og PC'en
- Start Logic på PC'en
- Sample rate 25 MS/s og Duration 20 milliseconds
- Vælg kun at vise channel 0
- Skift trigger til Falling egde
- Start måling og indtast de 3 farver på keypaden
- Tilføj Protocol Analyzer
- Async Serial
- Skift ikke settings og save
Hvis konfigureret korrekt burde der ses f.eks:

Hvis det er konfigureret korrekt vil der blive vist f.eks S255000255 i terminalen, hvis der er blevet indtastet Rød:255 Grøn:000 Blå:255.
Hvis det ikke blev vist skal der tjekkes følgende:
- TXEN0 bittet i Registreret: UCSR0B er sat til 1 da det er den der er tilsluttet USB seriel interfacet, en logic analyzeren kan bruges hvis man ikke bruger TX0.
- USART.h er opsat med de korrekte
#definesom i orginalt projektet


