Actions

Böpdisplayen

From Chalmers Robotics

Revision as of 20:05, 14 April 2018 by Antbern (talk | contribs)

En sida om den omtalade böpdisplayen!

Böpdisplayen


Uppbyggnad/Displaygränssnitt

Displayen är uppbyggd av ett flertal seriekopplade skiftregister där varje databit bestämmer om ett segment i en siffra skall vara tänt (1) eller släckt (0). Eftersom varje siffra endast består av 7 segment och varje skiftregister har 8 utgångar krävs det att man efter att ha skiftat ut varje siffras på/av-segment (totalt 7 bitar) även skiftar ut en "dummybit" för att alla bitar ska stämma överens med respektive segment.

Skiftregisterna är av typen MC74HC4094A ([1])


Inbyggd Styrenhet

Displayen har en egen inbyggd styrenhet som sköter uppdatering av innehållet. Den är byggd med en Arduino Nano.

Kommunikation

Kommunikation med den inbyggda styrenheten sker via en enkelriktad (simplex) seriell länk med följande specifikationer:

  • Hastighet: 115200 baud
  • Databitar: 8 st
  • Paritetetsbitar: Inga (None)
  • Stopbitar: 1 st

Detta motsvarar upplägget 8N1 och är standard i Arduinobiblioteket. Den seriella länken finns tillgänglig via en BNC-kontakt på styrenheten (yttre = jord, inre = signal).

OBS! Eftersom Arduino Nano:n kör med spänningen 5 Volt är det viktigt att inte skicka in mer än det via serielänken!

Kommandon

Styrenheten accepterar flera kommandon via den seriella länken. Gemensamt är att de alla består av ett kommandotecken följt av en eller flera datatecken (x). Accepterade datatecken är siffrorna 0-9, alla andra tecken behandlas som blanksteg och ger en tom siffra.

  • Sxxxxxxxx – uppdaterar hela displayen med nya datatecken xxxxxxxx.
  • [A-H]x – uppdaterar motsvarande displaysiffra [A-H, se bild (W.I.P.)] med innehållet som direkt följer bokstaven.
  • L – ställer in längden på hur många siffror som uppdateras när ett I-kommando tas emot. Uppstartsvärdet (default) är 8 och innebär att I-kommandot alltid skriver över alla siffror och genererar inledande nollor. Antalet siffror som önskas följer L i kommandosekvensen. För att styrenheten skall veta när alla siffror tagits emot krävs det att det sista tecknet ej är en siffra.
  • I[A-H] – skriver ett heltal (integer) till displayen med start på det angivna segmentet. Antalet segment som uppdateras anges via L-kommandot. Heltalets siffror följer I i kommandosekvensen och även här krävs det att det sista tecknet ej är en siffra.
  • W – inaktiverar automatisk uppdatering. I vanliga fall uppdateras displayen automatiskt när något av kommandona som ändrar innehållet mottagits, men efter detta kommando behöver det göras manuellt med R-kommandot. Detta läge är bra då man tänker göra många små uppdateringar innan allt innehåll är färdigskickat och minskar "flicker" på displayen.
  • Q – aktiverar automatisk uppdatering.
  • R – uppdaterar den fysiska displayen med det lagrade segmentinnehållet.

Exempel: Du vill skriva ut tid i formatet HH:MM:SS med start vid den tredje siffran (alltså högerjusterat). Först görs följande initiala inställningar:

  1. W - inaktivera automatisk uppdatering
  2. Sxxxxxxxx - tömmer displayen (x tolkas som ett mellanslag, kan vara vilket annat tecken som ej är en siffra här så länge det är åtta stycken)
  3. L2x - ställer in I-kommandot för två siffor. x är återigen ett tecken som inte är en siffra.

Varje gång du vill uppdatera med ny tid används följande kommandon:

  1. ICHHx - skriver antalet timmar med start på siffra C (den tredje), HH kan även vara endast H då antalet timmar är < 10. Inledande nollor sätts in automatiskt av styrenheten.
  2. IEMMx - samma som ovan fast för minuter
  3. IGSSx - samma som ovan fast för sekunder
  4. R - skriver ut det mottagna innehållet på displayen

Hårdvara

Pinout för styrenheten

På bilden till höger syns hur kontakterna på styrkortet är kopplade. Uppe till vänster kommer +12V och omvandlas till +5V för displayen och styrenheten. Displayen ansluts och styrs med kontakten uppe till höger. Kontakten längst ner till höger är till för kommunikation och bryter ut GND (jord), +5V, RX och TX från Arduino Nano:n. De seriella kommandona skickas till RX-pinnen (recieve). Observera att styrenheten och apparaten som skickar kommandon måste sammankopplas via jord för att kommunikationen ska fungera. På bilden syns hur den monterade BNC-kontakten är inkopplad.


Mjukvara

Mjukvaran, i form av en Arduinosketch, ges nedan.

KOD KOMMER SNART!