![Arduino Digital 7-Segment-Thermometer - Gunook Arduino Digital 7-Segment-Thermometer - Gunook](https://img.gwsigeps.com/img/circuits/arduino-digital-7-segment-thermometer-7.jpg)
Inhaltsverzeichnis:
- Zubehör:
- Schritt 1: Teileliste
- Schritt 2: Programmieren Sie den Arduino
- Schritt 3: Ändern Sie den Code, um eine gemeinsame Anodenanzeige zu verwenden (optional)
- Schritt 4: Einheiten und Aktualisierungszeit ändern (optional)
- Schritt 5: Setzen Sie es zusammen!
- Schritt 6: Fertig!
- 4 Leute haben dieses Projekt gemacht!
- FabioNovaski hat es geschafft!
- KoKoY2 hat es geschafft!
- Satele hat es geschafft!
- Shinfeng hat es geschafft!
- Empfehlungen
- Mash Up Arduino-Codebeispiele
- Open Source Ornithopter Prototyp. Arduino Powered und ferngesteuert.
- Klasse Internet der Dinge
- Farben des Regenbogenwettbewerbs
- IoT-Herausforderung
- Gartenwettbewerb
- 52 Diskussionen
Hallo zusammen! Ich zeige Ihnen, wie Sie mit dem Temperatursensor LM335 ein digitales 7-Segment-Thermometer herstellen.
Dies ist eine Anleitung für eine Arduino-Version, aber ich arbeite an einer Mini-ATtiny84-Version. Sobald ich das zum Laufen gebracht habe, werde ich ein weiteres Instructable darüber posten, wie es gemacht wird.
Ich bin sicher, Sie könnten dasselbe Thermometer auch mit einem LM35 herstellen, wenn Sie das haben und Sie werden den Code wahrscheinlich nicht ändern müssen.
Dies ist eine Teilnahme sowohl am LED-Wettbewerb mit Elemental LED als auch am Hurricane Lasers-Wettbewerb. Wenn es Ihnen gefällt, stimmen Sie ab! Vielen Dank!
Außerdem überlege ich mir, ein Elektronik-Kit-Geschäft zu eröffnen, um Kits für die von mir hergestellten Instructables zu verkaufen.
Zubehör:
Schritt 1: Teileliste
Hier sind die Dinge, die Sie für dieses Projekt benötigen. Sie können alle diese Teile von einem Großhandelsanbieter wie Mouser oder Digi-Key für etwa 10 bis 15 US-Dollar oder weniger erhalten, mit Ausnahme des Arduino-Boards. Sie können dies von Mouser für rund 30 $ erhalten.
Teile:
1x Arduino Uno / Duemilanove / vielleicht Diecimila oder gleichwertig
1x LM335-Temperatursensor (ich bin sicher, Sie könnten es auch mit einem LM35 zum Laufen bringen)
2x einstellige 7-Segment-Anzeige, gemeinsame Kathode (oder eine einzelne zweistellige)
1x 2,2k Ohm Widerstand (nicht sicher, ob Sie diesen benötigen, wenn Sie einen LM35 verwenden)
Überbrückungsdrähte
Werkzeuge:
USB A-B Kabel
Steckbrett
Schritt 2: Programmieren Sie den Arduino
Für den von mir geschriebenen Code muss die Arduino Seven Segment-Bibliothek installiert sein. Gehen Sie dazu hier und laden Sie alle Dateien herunter, indem Sie oben auf der Seite auf "Datei> Herunterladen" klicken.
Suchen Sie dann Ihren Arduino-Skizzenbuchordner (sollte sich unter Windows unter "Dokumente> Arduino" befinden) und erstellen Sie einen Ordner mit dem Namen "Hardware", falls noch keiner vorhanden ist. Gehen Sie in diesen Ordner und fügen Sie den zuvor heruntergeladenen Ordner in den "Hardware" -Ordner ein.
Es sollte nicht in einem ZIP- oder RAR-Format vorliegen. Dies wird höchstwahrscheinlich der Fall sein, wenn Sie es herunterladen. Sie müssen den gesamten Ordner extrahieren und im Hardware-Ordner ablegen.
Nachdem Sie die Bibliothek installiert haben, laden Sie den folgenden Code auf die Arduino-Platine hoch und fahren Sie mit dem nächsten Schritt fort.
#include "SevSeg.h"
SevSeg sevseg;
int tempUnits = fahrenheit; // Welche Temperatureinheit bevorzugen Sie?
int refreshTime = 5000; // Wie viele Sekunden sollte es warten, bevor es die Temperatur erneut prüft und anzeigt? 1000 = 1 Sekunde
vorzeichenloser langer Timer;
float celsius = 0, kelvin = 0, fahrenheit = 0;
void setup ()
{
sevseg.Begin (0,2,3,4,5,6,7,8,9,10,11,12,13);
}
leere Schleife ()
{
sevseg.PrintOutput ();
// Liest die Eingabe und konvertiert sie in Kelvin-Grad
Kelvin = analogRead (0) * 0,004882812 * 100;
// Konvertiert Kelvin in Celsius minus 2,5 Grad Fehler
Celsius = Kelvin - 2,5 - 273,15;
// Konvertiert Celsius in Fahrenheit minus 2,5 Grad Fehler
Fahrenheit = ((Kelvin - 2,5) * 9/5) - 459,67;
unsigned long mils = millis ();
if (mils-timer> = refreshTime) {
Timer = mils;
// Drucke Temperatur auf die Displays
sevseg.NewNum (tempUnits, (byte) 2);
}
}
Schritt 3: Ändern Sie den Code, um eine gemeinsame Anodenanzeige zu verwenden (optional)
Das Ändern des Codes zur Verwendung mit einer gemeinsamen Anodenanzeige ist einfach. Ändern Sie diese Codezeile:
sevseg.Begin (0,2,3,4,5,6,7,8,9,10,11,12,13);
zu:
sevseg.Begin (1,2,3,4,5,6,7,8,9,10,11,12,13);
Schritt 4: Einheiten und Aktualisierungszeit ändern (optional)
Ändern Sie die Codezeile oben, um die Einheiten der angezeigten Temperatur in Celsius oder zurück in Fahrenheit zu ändern:
int tempUnits = fahrenheit;
zu:
int tempUnits = celsius;
wenn Sie Celsius bevorzugen.
Ändern Sie die Codezeile oben, um die Rate zu ändern, mit der die Anzeige die Temperatur aktualisiert:
int refreshTime = 5000;
zu:
int refreshTime =
Der Code wird standardmäßig alle 5 Sekunden aktualisiert. Wenn Sie eine zu niedrige Zahl eingeben, wird diese so schnell aktualisiert, dass Sie sie nicht lesen können.
Schritt 5: Setzen Sie es zusammen!
Hier ist der Schaltplan für das Thermometer. Ich habe meine auf einem Steckbrett gemacht.
Schritt 6: Fertig!
Schließen Sie es an und es sollte die Temperatur in Fahrenheit oder Celsius anzeigen, je nachdem, welche Einheit Sie gewählt haben.
Erledigt!
4 Leute haben dieses Projekt gemacht!
-
FabioNovaski hat es geschafft!
-
KoKoY2 hat es geschafft!
-
Satele hat es geschafft!
-
Shinfeng hat es geschafft!
Hast du dieses Projekt gemacht? Teile es mit uns!
Empfehlungen
-
Mash Up Arduino-Codebeispiele
-
Open Source Ornithopter Prototyp. Arduino Powered und ferngesteuert.
-
Klasse Internet der Dinge
-
Farben des Regenbogenwettbewerbs
-
IoT-Herausforderung
-
Gartenwettbewerb
52 Diskussionen
0vor 4 Monaten
error1: 'SevSeg benennt keinen Typ …
error2: sevseg wurde in diesem Bereich nicht deklariert
:-()
0vor 1 Jahr
Tienes que optimizar el código …
Vor 5 Jahren auf Einführung
Es scheint, dass Herr / Frau xBacon nicht bereit ist, Fragen im Zusammenhang mit dieser Anweisung zu beantworten. Er / Sie liest offensichtlich nicht einmal die Kommentare … oder seinen / ihren Posteingang! Deshalb habe ich mich vorgenommen, die Lösung für das "Nullen-Problem" zu suchen und zu finden. Hier ist der RICHTIGE, 100% ARBEITS-Code:
#include "SevSeg.h"
SevSeg sevseg;
int refreshTime = 2000; // Wie viele Sekunden sollte es warten, bevor es die Temperatur erneut prüft und anzeigt? 1000 = 1 Sekunde
vorzeichenloser langer Timer;
float celsius = 0, kelvin = 0, fahrenheit = 0;
void setup ()
{
sevseg.Begin (0,2,3,4,5,6,7,8,9,10,11,12,13);
}
leere Schleife ()
{
sevseg.PrintOutput ();
// Liest die Eingabe und konvertiert sie in Kelvin-Grad
Kelvin = analogRead (0) * 0,004882812 * 100;
// Konvertiert Kelvin in Celsius minus 2,5 Grad Fehler
Celsius = Kelvin - 2,5 - 273,15;
// Konvertiert Kelvin in Fahrenheit minus 2,5 Grad Fehler
Fahrenheit = ((Kelvin - 2,5) * 9/5) - 459,67;
unsigned long mils = millis ();
if (mils-timer> = refreshTime) {
Timer = mils;
// Drucke Temperatur auf die Displays
sevseg.NewNum (Celsius, (Byte) 2);
}
}
Wenn Sie die Temperatureinheit ändern möchten, müssen Sie lediglich den letzten Befehl ändern: sevseg.NewNum (celsius, (byte) 2);
Anstelle von "celsius" können Sie "fahrenheit" oder "kelvin" eingeben. Es scheint, dass all diese "tempUnits" -Dinge nicht funktionieren, also habe ich sie komplett aus dem Code ausgeschlossen.
Sie können die Verzögerung auch ändern, indem Sie den Schritten dieser Anleitung folgen.
Habe Spaß!
2 Antworten 0Antworten vor 1 Jahr
Danke für den Code, der funktioniert.
Können Sie bitte sagen, wie kann ich es 3-stellig machen, wie 30,5 celcius
In diesem Code wird die Ausgabe von Kelvin und Celsius umgekehrt.
0Antworten vor 4 Jahre auf Introduction
Ist es möglich, die Messwerte sowohl auf der Serail als auch auf dem LED-Display anzuzeigen?
Ich habe es versucht aber ich kann nur den einen oder anderen bekommen aber nicht beide.
0vor 2 Jahren
Bitte helfen Sie. Ich kann den obigen Code nicht kompilieren und habe keine SevSeg.h-Datei.
0vor 2 Jahren
Sie da !! Nettes Tutorial, bitte Code an [email protected] senden, Danke:)
0Vor 3 Jahren bei Introduction
Ok, ich ändere einige Dinge am Code und habe es auf einem LM35 funktionieren lassen. Wenn jemand den Code haben möchte, antworte einfach auf diesen Kommentar und ich lasse es dich wissen.
Tolle Arbeit in diesem Projekt, danke. Hat mir sehr geholfen!
8 Antworten 0Antworten vor 2 Jahren
Hallo, kannst du mir bitte den Code schicken?
0Antworten vor 3 Jahren
Hallo. Ich habe Ihren lm35-modifizierten Code in einem größeren Projekt verwendet und wollte nach einer Erklärung für jede Zeile im Code fragen, damit ich ihn besser verstehe. (Ich bin Student, für mein letztes Projekt) leshetzlee @ gmail.com
0Antworten vor 3 Jahren
Ich benötige den Code [email protected]
0Antworten vor 3 Jahren
Ich brauche Code
0Antworten vor 3 Jahren auf Introduction
Würdest du bitte helfen? Ich habe LM35. Kannst du mir den Code schicken?
0Antworten vor 3 Jahren auf Introduction
Lesen Sie den Kommentar, den ich an @SaironN sende, dort ist der Code.
0Antworten vor 3 Jahren auf Introduction
Ich möchte es bitte wissen !!
0Antworten vor 3 Jahren auf Introduction
Ich sende nicht per E-Mail, aber ich informiere Sie hier: D
#include "SevSeg.h"
SevSeg sevseg;
int refreshTime = 2000; // Wie viele Sekunden sollte es warten, bevor es die Temperatur erneut prüft und anzeigt? 1000 = 1 Sekunde
vorzeichenloser langer Timer;
float celsius = 0, kelvin = 0, fahrenheit = 0;
void setup ()
{
sevseg.Begin (1,2,3,4,5,6,7,8,9,10,11,12,13);
}
leere Schleife ()
{
sevseg.PrintOutput ();
// LM35-Code zum Anzeigen von Celsius
celsius = (5,0 * analogRead (0) * 100,0) / 1024;
unsigned long mils = millis ();
if (mils-timer> = refreshTime) {
Timer = mils;
// Drucke Temperatur auf die Displays
sevseg.NewNum (Celsius, (Byte) 2);
}
}
Dank an:
salexandridis
xBacon
0vor 2 Jahren
Ich möchte ein 3-stelliges 7-Seg-Display anstelle von 2 Ziffern verwenden. Was ist der Code dafür?
0vor 2 Jahren
Hallo. Ich würde gerne wissen, ob mir jemand hilft, den Code so zu ändern, dass er Temperaturen von -20 bis zu jedem anderen misst.
Danke im Voraus.
0Vor 3 Jahren
hallo darf ich wissen warum serial.begin (1,2,3,4,5,6,7,8,9,10,11,12,13)) total hv 13pin? weil was ich weiß, ist 2digit + A, um zu punktieren, brauchen Sie nur 10pin, können Sie bitte für weitere Einzelheiten erklären, danke.
0Vor 3 Jahren
Der Code lässt mich nicht auf mein Arduino hochladen, da die Angabe Fahrenheit in diesem Bereich nicht definiert ist. Wie soll ich das beheben?