Arduino Digital 7-Segment-Thermometer - Gunook

Arduino Digital 7-Segment-Thermometer - Gunook

Inhaltsverzeichnis:

Anonim

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

0

pistib

vor 4 Monaten

error1: 'SevSeg benennt keinen Typ …

error2: sevseg wurde in diesem Bereich nicht deklariert

:-()

0

OmarP45

vor 1 Jahr

Tienes que optimizar el código …

0

salexandridis

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 0

alexm474 salexandridis

Antworten 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.

0

mal eben salexandridis

Antworten 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.

0

AgileMind

vor 2 Jahren

Bitte helfen Sie. Ich kann den obigen Code nicht kompilieren und habe keine SevSeg.h-Datei.

0

EdunY

vor 2 Jahren

Sie da !! Nettes Tutorial, bitte Code an [email protected] senden, Danke:)

0

Vitor Reppen

Vor 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 0

Salimalabri979 Vitor Reppen

Antworten vor 2 Jahren

Hallo, kannst du mir bitte den Code schicken?

0

דניאלה1 Vitor Reppen

Antworten 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

0

RDP_1210 Vitor Reppen

Antworten vor 3 Jahren

Ich benötige den Code [email protected]

0

AnoopS7 Vitor Reppen

Antworten vor 3 Jahren

Ich brauche Code

[email protected]

0

Gowri Vitor Reppen

Antworten vor 3 Jahren auf Introduction

Würdest du bitte helfen? Ich habe LM35. Kannst du mir den Code schicken?

0

Vitor Reppen Gowri

Antworten vor 3 Jahren auf Introduction

Lesen Sie den Kommentar, den ich an @SaironN sende, dort ist der Code.

0

SaironN Vitor Reppen

Antworten vor 3 Jahren auf Introduction

Ich möchte es bitte wissen !!

[email protected]

0

Vitor Reppen SaironN

Antworten 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

0

Hari_10

vor 2 Jahren

Ich möchte ein 3-stelliges 7-Seg-Display anstelle von 2 Ziffern verwenden. Was ist der Code dafür?

0

Xarabalios

vor 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.

0

Shinfeng

Vor 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.

0

RDP_1210

Vor 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?