Een elektronisch naamplaatje met zijn eigen scrolltekst

Hallo, vandaag wil ik een snel-te-bouwen project introduceren.Vandaag bouwen we een elektronische naamplaat met een 16x2 karakter LCD module en achtergrondverlichting.Hiervoor hebben we een duidelijk aantal onderdelen van de Maker Basket nodig:

Onderdelen:

In de volgende stap verbinden we de componenten op een bordsbord als volgt, of monteren we het circuit direct op een hole star board:

Structuur van Fritzing

 

We verbinden nu de display en het hele circuit.Het display moet worden uitgeschakeld van het eigenlijke circuit om een flexibel gebruik te waarborgen.

We kunnen de elektronische naamplaat op vele manieren gebruiken.Wat dacht je van, bijvoorbeeld, een speciale tafelnaamkaartje bij de volgende training van het bedrijf?Of misschien als een nieuw kantoorbord bij de ingang van het kantoor?Als naamkaartje in een speech als spreker?Maar misschien ook als naamkaartje op de brievenbus?Over in de brievenbus slot achter de naamplaat:

Voorbeeld van de mailbox

 

Bij de installatie worden echter de volgende bijzondere punten in aanmerking genomen:

  1. Alle spanningsgeleidende of spanningsgenererende onderdelen moeten volledig waterdicht zijn geïnstalleerd.Anders kan ons circuit vernietigd worden door vochtigheid.Corrode, die kan leiden tot storingen of erger, kortsluiting.

  2. Het display moet deel uitmaken van de opening en sluiting van het deksel op de hierboven aangegeven wijze.Dit betekent dat hier bijzondere aandacht moet worden besteed aan zorgvuldige en passende kabelleggers en kabelselectie.De kabel tussen het display en Arduino moet permanent deelnemen aan de bewegingen van de klep van de brievenbusklep.Het is beter om het te installeren op vaste plaatsen zoals de mailbox body.

  3. Op alle punten mag alleen niet-gevaarlijke lage spanning worden gebruikt.

  4. In het geval van een stroomstoring verloopt het display ook.Om duidelijk te maken waar de mail in dit geval te verzenden, is het nog steeds raadzaam om een vervangende naamplaat toe te voegen 😊

  5. Het is essentieel om de voeding te beveiligen met een geschikte lont.

Veel punten, dus, die het moeilijk maken om te installeren in de mailbox en daarom moet worden overgelaten aan een elektricien.Dus misschien is het beter om het te gebruiken als naamkaartje. 😉

 

"35; omvat <LiquidCrystal..H>
"35; omvat <nie/slaap.H>
 
Constants & Definities
const drijven Waarschuwing = 4.0;
const drijven Sleepsspanning = 3.2;
const int Scrollspeed. = 500;
const lang interval = 1000;    // Definitie van een tweede in milliseconden

/const byte VoltTestPin = 0; // Test Analoging 0
const uitwisseling VoltTestPineGenericName = 2; // Produktieve Analoog 2

Real Time Clock 
lang eerdere = 0;       // zal de laatste keer gemeten
uitwisseling seconden = 0; 
uitwisseling minuten = 0;
uitwisseling uur = 0;

// String Defitions
String Eigenaar van LetterBoxName = Tobias's Kitchen.;  Verander alstublieft in uw eigen naam!
String Standaard = "Voer hier uw eigen tekst in, die wordt weergegeven als geschrift tekst."; 
String StandardScolltext ="To bi or not to be,--dat is de vraag!"// Voorbeeld tekst
String BattInfo;

Logisch programma
uitwisseling Charpointers.[200];
drijven waarde;
int Volume;
booleaans Batterij = Vals;
uitwisseling Weergave = 0;
uitwisseling oldDisplaymodus = 0;
int Switchstate. = 1;
uitwisseling DispeltTime = 0;
uitwisseling DisplexeOnTijdAFVAL = 0;
int cmpMsgWitComment = 0;
int MAMsgDC. = 0;
uitwisseling Match = 0; 

// LiquidCrystal(rs, inschakelen, d4, d5, d6, d7);
LiquidCrystal. sm(8, 9, 4, 5, 6, 7);

Leeg InitComment ()
{
sm.helder();
sm.print(Eigenaar van LetterBoxName);
sm.setCursor(0,1);
sm.setCursor(0,0);
vertraging(1000);
}

Leeg setup()       {      voor (int a=0; a <200;a++)      {      Charpointers.[a] = a;       }      sm.start(16, 2);              // start de bibliotheek      InitComment();      analogeReferentie(DEFAULT);
}

Leeg NormaleScrollText ()
{
 int cmpMsgWitComment = Standaard.lengte()- 2;
 Weergave = 0;
 vertraging (Scrollspeed.);
 sm.setCursor(0,1);
 voor (int a=0; a <17;a++)      {      sm.print(Standaard[Charpointers.[a]]);      }      voor (int a=0; a <cmpMsgWitComment;a++)      {      Charpointers.[a] = Charpointers.[a] + 1;       indien (Charpointers.[a] > cmpMsgWitComment) {Charpointers.[a] = 0; }      }   }

Leeg BatterWarningScrolltext ()
{
 BattInfo = "Attentie!De spanning is verbroken. + String(Volume * 3) + Stem." + Standaard + "  ";
 int cmpMsgWitComment = BattInfo.lengte()- 2;
 Weergave = 2;
 vertraging (Scrollspeed. /2 );
 sm.setCursor(0,1);
 voor (int a=0; a <17;a++)      {      sm.print(BattInfo[Charpointers.[a]]);      }      voor (int a=0; a <cmpMsgWitComment;a++)      {      Charpointers.[a] = Charpointers.[a] + 1;       indien (Charpointers.[a] > cmpMsgWitComment) {Charpointers.[a] = 0; }      }   }

Leeg Stroom. ()  Schakel de stroom uit, als de kritische spanning bereikt is.
{
 sm.setCursor(0,1);
 sm.print("                  ");
 sm.setCursor(0,1);
 sm.print("Sys in SleepMode");
 set'u slaapstand(DOOD PWR DOOD);
 cli();
 slaapstand();
 zes();
 slaap cpu();
 herstart
}

booleaans Waarschuwing ()
{     waarde = analoog(VoltTestPineGenericName);    // lees de invoerpin   waarde = waarde  * 0.00488;    indien (waarde <= Sleepsspanning) {   Volume = waarde;   Stroom.();   }    indien (waarde <= Waarschuwing) {   Volume = waarde;     Terugkeer waar;    }    {   Terugkeer Vals;   }   }

Leeg runrealTimeClock()
{   // Real Time Clock & Countdown
ongeschikt lang huidige Millis = millis();   indien(huidige Millis - eerdere > interval)   {      eerdere = huidige Millis;
// Aftellen
Tel 24 St. Sir.      seconden = seconden+1;      indien (seconden > 59)       {           seconden = 0;           minuten=minuten+1;                    Batterij = Waarschuwing ();           indien (minuten > 59)           {            minuten =0;            indien (Match > 1) { Match --;} Display of message-symbool             uur=uur + 1;                     }            indien (uur > 23)           {            uur = 0;           }       }       }
}

Leeg ChangeDisplayMode()
{   indien ( Weergave > oldDisplaymodus )   {     oldDisplaymodus = Weergave;      voor (int a=0; a <200;a++)      {      Charpointers.[a] = a;       }   }     indien ( Weergave < oldDisplaymodus )   {     oldDisplaymodus = Weergave;      voor (int a=0; a <200;a++)      {      Charpointers.[a] = a;       }   }
}    Leeg ren()
{
runrealTimeClock();
indien (!Batterij)
{
 NormaleScrollText (); 
 }
indien (Batterij)
{
 BatterWarningScrolltext ();
}
ChangeDisplayMode();
}

 

 

We uploaden de volgende code naar onze Arduino:Na het uploaden van de code begint ons display direct om de naam te tonen in de eerste regel en in de tweede de gespecificeerde geschrift tekst van de code in de regel

String Standaard Scolltext ="Voer hier uw eigen tekst in, die wordt weergegeven als geschrift tekst.";

is gedefinieerd.Bovendien wordt de voedingsspanning gecontroleerd via de pin A2 en als een bepaald spanningsniveau onder de waarschuwing staat: "Attentie!Voltage verbroken op: x Volt."in het display als scrolltext-extensie.Dit moet wijzen op een zwakke batterij in een mogelijk scenario met batterij werking.Als de batterij dan verder wordt ontladen, gaat de processor permanent in slaapstand en wordt het bericht "Sys in SleepMode" weergegeven.Aangezien het display nog steeds actief is, wordt de batterij nog steeds ontladen.Dus dit is geen bescherming tegen een diepe lading, maar een hint.

Als het circuit zonder batterij wordt bediend, kan het codedeel ook worden verwijderd zonder verdere aantasting van de functie.

 

Veel plezier met herbouwen en zie je de volgende keer.

DisplaysFür arduinoProjekte für anfänger

13 Kommentare

Wolf

Wolf

Ein kleines Schaltbild wäre oft hilfreich zusätzlich zur Fritzing-Dastellung und würde Unklarheiten eventuell sofort ausräumen.
Nett wäre es auch, die Blogs als vielleicht *.pdf Datei archivierbar zu machen.
So entstände dann mit der Zeit eine tolle kleine Bibliothek mit vielen Anregungen.

Heinz

Heinz

Habe die Lösung schon gefunden: Gleiche Pinbelegung beim Nano wie beim Uno: A2, D4 bis D9. Ein Potentiometer 10k statt des festen Widerstands 4,7k ist sehr empfehlenswert.
Gruß Heinz

Heinz

Heinz

Wie sähe die Pinbelegung eines Nano V3 aus. Der läßt sich besser in der Jackentasche verstauen, wenn das Display als Namensschild am Anzug dient.
Dank und Gruß
Heinz

Heinz Andersen

Heinz Andersen

Auch ich bin darüber gefallen: Die Verdrahtung ist nicht ganz klar, Farben werden teilweise überdeckt.
Die Farben der Widerstände sind nicht eindeutig zu erkennen.
Auch finde ich auch nicht " avr/sleep.h " , als zip Version. Dieses wäre am einfachsten zur Installation in
die Bibliothek. Meine programmier Kenntnissen sind nicht besonders groß.

Ich werde demnächst einen Paketbriefkasten installieren, dieses Projekt kommt mir sehr entgegen !
MfG Heinz

Mike

Mike

Hallo Tobias,
Danke für Deine Antwort aber meine Frage war auf das Briefkasten"schild" bezogen mit den I2C Dispaly ;-) Mit dem von Dir Vorgeschlagenen kann ich leider nichts anfangen :-/ Schade.
Gruss
Mike

Jürgen

Jürgen

Hi,
die Idee ist an sich schon cool. Allerdings: wenn ich das im Briefkasten montiere, wie Temperatur-Beständig ist denn das Display? Wird der Scroll-Text dann immer noch flüssig angezeigt? Ich hätte hier sechs Briefkästen, wie günstig ist die vorgestellte Bauweise und geht es noch günstiger (ja, ich weiß, ich könnte auch selbst recherchieren. Kenn mich jedoch zu wenig aus)? Kann man die Schaltung erweitern um eine Funkmeldung, wenn Post im Kasten ist, zB. direkt an eine eMail-Adresse (zB über HomeAssistant, iobroker, oder so)?
Nur so meine Gedanken dazu!!

Frank C

Frank C

Hallo!

Ich habe Probleme mit dem Wiring… da geht Schwarz in Rot über… hmmm…
Und die oder die Widerstände gehen die von türkis nach schwarz und über rot nach schwarz? Sorry, bin nicht gerade Neuling, aber diese Grafik überfordert mich ein wenig… Einzig die oberen 6 Drähte sind klar/eindeutig.

Ist schwarz (2mal vom Uno) einmal “nur” überdeckt? Ok, vllt. wird’s dann klarer…

Und wie sind dann die beiden roten mit dem Widerstand gekoppelt?

mfg
Frank C aus D

Tobias

Tobias

Hallo Claus,
Leider ist eine Anbindung eines e-Paper Displays an einen Microcontroller – im Gegenteil -wesentlich komplexer statt einfacher , da hier u.a . Fonts seitens den uC geladen werden müssen.
Da der ESP 32 ist für diese Projektaufgabe schlicht komplett unterfordert ist , nutze ich einen der Aufgabe angepassteren uC.

Tobias

Tobias

Hallo Mike,

dein Display hat einen I2C Bus Anschluss. Du kannst es ohne Anpassung des Codes so nicht mit dem Code verwenden. Hier ist ein Projekt für dein Display: https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/i2c-scanner-mit-lc-display?ls=de

Viele Grüße

JoergSn

JoergSn

Das Ganze noch mit einem E-Ink Display und wir kommen einem Deal verdammt nahe. ;-)

Mike

Mike

Coole Idee!!!
Aber was mach ich wenn ich nen 16×2 LCD hab wo hinten ne Platine drauf ist und nur 4 Anschlussmöglchkeiten vorhanden sind (GND, VCC, SDA, SCL)?
Sorry, bin noch neu in der Materie :D

Calade

Calade

Hello,
Nice idea ! It would be wise to add a proximity sensor to lit the display only when someone is near the letterbox and a photosensor to adjust LCD intensity to ambiant light ?
Regards,

Claus

Claus

Warum nicht mit e-paper ? Mit einem ESP32 mit e-paper-Display ist das doch einfacher.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi