Une étiquette de nom électronique avec son propre texte de défilement

Aujourd'hui je voudrais présenter le salut, un projet à construire vite. Aujourd'hui, nous nous construisons une enseigne électronique avec un signe 16x2 le module LCD et éclairage de fond. Nous avons besoin pour cela d'un nombre clair à des parties de Maker-Bastelkiste :

Liste partielle :

Dans le prochain pas, nous lions les composants sur Breadboard comme c'est indiqué plus loin, ou assemblons la mise en circuit directement sur Lochrasterplatine :

Fritzing la construction

 

Maintenant, nous lions le display ainsi que la mise en circuit totale. Avec cela le display devait être vendu par la véritable mise en circuit quelque chose pour garantir une application flexible.

Nous pouvons utiliser varié l'enseigne électronique. Comment serait-il, par exemple, avec une enseigne de table particulière à la prochaine formation industrielle ? Ou, peut-être, aussi comme la nouvelle enseigne de bureau à l'entrée du bureau ? Comme l'enseigne à une conférence comme orateur ? Probablement, cependant aussi comme l'enseigne à la caste postale ? A peu près dans la fente de castes postale derrière la fente de nom :

Exemple à la caste postale

 

A l'installation à côté est à faire attention, donc, les points particuliers suivants :

  1. Toutes les parties éminentes la tension ou produisant la tension doivent être masquées complètement étanche. Notre mise en circuit peut être détruite à part cela par l'humidité ou se corroder qui peut avoir des pertes ou pire, des courts-circuits à la conséquence.

  2. Le display doit participer à l'ouverture et fermeture du couvercle de castes dans la manière d'installation montrée en haut. Cela signifie ici en particulier sur le transfert de câble soigneux et convenable et l'élection de câble convenable est à faire attention. Le câble entre le display et Arduino doit participer durablement aux mouvements de couvercles du couvercle de castes de poste. Une installation aux lieux immobiles comme, par exemple, dans le corps de castes de poste est mieux.

  3. La tension petite de protection seulement sans danger peut être utilisée à chaque lieu.

  4. A une perte de courant s'éteint aussi l'annonce. Pour que se rend compte tout de même encore dans ce cas où la poste doit là, il recommande soi de placer encore une enseigne de recharge 😊

  5. L'alimentation en courant est à assurer absolument avec une protection convenant.

Beaucoup de points, qui devaient faire difficile l'installation dans la caste postale et être laissé pour cette raison à un installateur de matière électrique. Donc, peut-être, pourtant, mieux que l'enseigne de table utilisent 😉

 

#include <LiquidCrystal.h>
#include <avr/sleep.h>
 
//Constants & Definitions
const float Warnvoltage = 4.0;
const float Sleepvoltage = 3.2;
const int Scrollspeed = 500;
const long interval = 1000;    //Définition of a Second dans Milliseconds

//const l'octet de VoltTestPin = 0;//le test l'entrée analogue 0
const octet VoltTestPin = 2; //De façon productive l'entrée analogue 2

//Réellement Time Clock 
long previousMillis = 0;       //veux le store lisait time que measured
octet seconds = 0; 
octet minute = 0;
octet hour = 0;

//Chaîne Defitions
Chaîne LetterBoxOwner = " Tobias Kuch";  //S'il vous plaît, dans le propre nom changent!
Chaîne StandardScolltext = "Ici inscrivent le propre texte qui est indiqué comme Scrolltext."; 
//Chaîne StandardScolltext = "To bi or not to be - that is the Question!";//le texte d'exemple
Chaîne BattInfo;

//Prochagrin logic
octet CharPointers[200];
float value;
int Voltage;
boolean BatteryEmpty = false;
octet Mode de display = 0;
octet oldDisplaymode = 0;
int Switchstate = 1;
octet DispLATextOneTime = 0;
octet DispLATextOneTimeWASDisp = 0;
int cmpMsgWith = 0;
int MAMsgDC = 0;
octet MatC = 0; 

//LiquidCrystal (rs, enable, d4, d5, d6, d7);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void InitLcdScreen ()
{
lcd.clear();
lcd.print(LetterBoxOwner);
lcd.curseur d'assortiment(0,1);
lcd.curseur d'assortiment(0,0);
delay(1000);
}

void setup()       {      for (int a=0; a <200;a++)      {      CharPointers[a] = a;       }      lcd.begin(16, 2);              //départ the library      InitLcdScreen();      analogReference(DEFAULT);
}

void NormalScrolltext ()
{
 int cmpMsgWith = StandardScolltext.length()- 2;
 Mode de display = 0;
 delay (Scrollspeed);
 lcd.curseur d'assortiment(0,1);
 for (int a=0; a <17;a++)      {      lcd.print(StandardScolltext[CharPointers[a]]);      }      for (int a=0; a <cmpMsgWith;a++)      {      CharPointers[a] = CharPointers[a] + 1;       if (CharPointers[a] > cmpMsgWith) {CharPointers[a] = 0; }      }   }

void BatteryWarningScrolltext ()
{
 BattInfo = "- le respect! Tension de manière enfoncée sur :" + Chaîne(Voltage * 3) + " Le volt. -" + StandardScolltext + "  ";
 int cmpMsgWith = BattInfo.length()- 2;
 Mode de display = 2;
 delay (Scrollspeed /2 );
 lcd.curseur d'assortiment(0,1);
 for (int a=0; a <17;a++)      {      lcd.print(BattInfo[CharPointers[a]]);      }      for (int a=0; a <cmpMsgWith;a++)      {      CharPointers[a] = CharPointers[a] + 1;       if (CharPointers[a] > cmpMsgWith) {CharPointers[a] = 0; }      }   }

void Powerdown ()  //Toggle Powerdown, if critical Voltage is reached.
{
 lcd.curseur d'assortiment(0,1);
 lcd.print("                  ");
 lcd.curseur d'assortiment(0,1);
 lcd.print("Sys dans SleepMode");
 set_sleep_mode(SLEEP_MODE_PWR_DOWN);
 cli();
 sleep_enable();
 fut();
 sleep_cpu();
 //manière résiduelle
}

boolean BattWarning ()
{     value = analogRead(VoltTestPin);    //read l'entrée the pin   value = value  * 0.00488;    if (value <= Sleepvoltage) {   Voltage = value;   Powerdown();   }    if (value <= Warnvoltage) {   Voltage = value;     return true;    }    {   return false;   }   }

void runrealTimeClock()
{   //Réellement Time Clock & compte à rebours
unsigned long currentMillis = millis();   if(currentMillis - previousMillis > interval)   {      previousMillis = currentMillis;
//Compte à rebours
//Countup 24 Saints Hr.      seconds = seconds+1;      if (seconds > 59)       {           seconds = 0;           minute=minute+1;                    BatteryEmpty = BattWarning ();           if (minute > 59)           {            minute =0;            if (MatC > 1) { MatC --;} //Annonce de la nouvelle du symbole             hour=hour + 1;                     }            if (hour > 23)           {            hour = 0;           }       }       }
}

void ChangeDisplayMode()
{   if ( Mode de display > oldDisplaymode )   {     oldDisplaymode = Mode de display;      for (int a=0; a <200;a++)      {      CharPointers[a] = a;       }   }     if ( Mode de display < oldDisplaymode )   {     oldDisplaymode = Mode de display;      for (int a=0; a <200;a++)      {      CharPointers[a] = a;       }   }
}    void loop()
{
runrealTimeClock();
if (!BatteryEmpty)
{
 NormalScrolltext (); 
 }
if (BatteryEmpty)
{
 BatteryWarningScrolltext ();
}
ChangeDisplayMode();
}

 

 

Nous chargeons le code suivant sur notre Arduino hoch:Nach de hauts coffres du code notre display commence directement à montrer le nom dans la première ligne et dans les deuxièmes Scroll fixé à l'avance le texte dans le code dans la ligne

La chaîne StandardScolltext = "Ici le propre texte inscrivent qui est indiqué comme Scrolltext.";

était défini indiquer. De plus en plus, la tension d'approvisionnement sur Pin A2 est surveillée et à sous-marchent de Spannungslevels certain l'avertissement : „Le respect! Tension de manière enfoncée sur : x le volt.“ dans le display comme Scrolltext l'élargissement distribué. Cela doit indiquer dans un scénario possible avec l'alimentation par batteries une faible batterie. Si la batterie se décharge alors encore plus loin, le processeur va dans ce cas durablement à un mode de sommeil et à l'annonce : „Sys dans SleepMode“ est indiqué. Puisque le display est encore actif cependant, pourtant, cependant la batterie se décharge à l'avenir. Ce n'est aucune protection devant un déchargement de dépression, mais seulement une indication.

Au cas où la mise en circuit soit faite sans batterie, le code la partie peut aussi être enlevé sans autre préjudice de la fonction.

 

Beaucoup de plaisir en imitant et jusqu'à la prochaine fois.

EtalagesPour arduinoProjets pour les débutants

13 commentaires

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.

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi