Code Monkey home page Code Monkey logo

arduino-temperatur's Introduction

Temperaturleser

Det første prosjektet vi lagde med arduinoen var en temperaturleser. Den bruker en temperaturleser fra et større anlegg. Temperaturleseren kan lese 9 °C til 42 °C. Den sender ut en spenning mellom 0 og 10 volt avhengig av temperaturen. Vi opplevde at signalet var veldig ustabilt, så vi brukte en kondensator og en spole for å gjøre det mer stabilt. For å bruke en analog port på arduinoen for å lese av dette signalet, måtte vi også halvere spenningen før den kom inn.

Programmet gjør så dette signalet om til Celsius verdien og sender dette over Serieporten til pcen. På pcen kjører et Python skript som gjør temperaturdataene litt penere og viser dette i et grafisk program.

Temperatur tegning

Temperatur flowchart

Arduino kode

For å lese spenningen fra temperaturleseren bruker vi analogRead(). Den leser en spenning på 0-5 volt og gir verdien med 10-bits. Vi får altså en verdi mellom 0 og 1023. For å vise Celsius, må vi først dele verdien på 31 for å få stigning med 1 celsius. Siden den laveste målbare temperaturen er 9 °C, må vi plusse på 9. Da kan verdien bare være mellom 9 °C og 42 °C. Pga. mye støy, leser vi temperaturen 10 ganger og går videre med gjennomsnittet. Vi har også en led som lyser hvis temperaturen er mindre enn 18 °C.

int anpin = 4;
int tempr = 0;
int ledpin = 2;

void setup()
{
	//Setter opp forbindelse med datamaskinen
	Serial.begin(9600);
	pinMode(ledpin, OUTPUT);
}

void loop()
{
	//setter temperaturen til 0
	float tempr = 0;
	//leser temperaturen 10 ganger
	for(int i=0; i<10; i++){
		tempr = tempr + analogRead(anpin)/31+9; //deler på 31 og plusser på 9 for å få Celsius
		delay(100);
	}
	//deler på 10 for å få gjennomsnitt
	float temp = tempr/10;
	//sender temperaturen til pcen
	Serial.println(temp);

	//skrur på lys om temperaturen er over 18 grader
	if (temp < 18.00){
		digitalWrite(ledpin, HIGH); // Skrur på ledpin
	}
	else{
		digitalWrite(ledpin, LOW); // Skrur av ledpin
	}
	delay(100); // Venter i 0.1 sekunder
}

Python kode

For å kjøre python skriptet trenger du et par ting:

  • Python 2.x eller 3.x For å laste ned python til Windows kan du klikke her. For Ubuntu er Python 2 og python 3 allerede installert, men hvis du vil laste det ned på et annet os eller en annen versjon, kan du skrive sudo apt-get install python

  • pySerial Dette er en python pakke som lar deg sende og motta serie data fra arduinoen. Med python installert kan du skrive pip install pyserial for å installere denne.

  • Tkinter Dette er en annen pakke vi bruker for å lage grafiske brukergrensesnitt med python. Dette kan installeres ved å skrive sudo apt-get install python-tk

Programmet leser siste linjen med seriadata sendt fra arduinoen og setter dette inn i en "label" med et gradetegn. Dette vises i en boks, i tilegg til en stop knakk som lukker programmet.

Python skriptet blir seende slik ut:

Tkinter gui

# Importerer tkinter og pySerial
from Tkinter import *
import serial

# Setter ser til aa lese seriedata fra /dev/ttyACM0
# og overforingshastighet 9600
ser = serial.Serial('/dev/ttyACM0', 9600)

# Lager en label med temperaturen, gradetegn og "C"
def counter_label(label):
  def count():
    temp = ser.readline().strip()
    label.config(text = temp + " " + u"\N{DEGREE SIGN}" + "C"  )
    label.after(1000, count)
  count()

# Gjor klar vinduet
root = Tk()
root.title("Temperatur") # Setter tittel på vinduet
label = Label(root, fg="green", font=("Helvetica", 42)) # Setter farge, font og
                                                        # storelse på teksten
label.pack()
counter_label(label) # Setter inn teksten ovenifra
# Legger til en knapp som lukker programmet
button = Button(root, text='Stop', width=25, command=root.destroy)
button.pack()
# Apner vinduet
root.mainloop()

arduino-temperatur's People

Contributors

torjeikenes avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.