Omfattningen klocka: Analog klocka och temperaturgivare på oscilloskop (3 / 3 steg)

Steg 3: kod

Koden

#include < PinChangeInt.h >
#include < PinChangeIntConfig.h >
int PIN = 10; PIN på vilka avbrott ska genereras (pin ansluten till strömbrytare som när trycks in visas Visa temp på oscilloskop)

int thermistorpin = A0; som analog pin att ansluta
int thermistornominal = 150; motstånd vid 25 grader C
int temperaturenominal = 25; Temp. för nominella resistans (nästan alltid 25 C)
int numsamples = 100; Hur många prover att ta och genomsnitt, mer tar längre tid
men är mer "mjuk"
int bcoefficient = 3950; Den beta koefficienten för termistor (oftast 3000-4000)
int seriesresistor = 10000; värdet av "övriga" motståndet
int k;
int t1, t2; 2 siffror för temp
int prover [100]. Nej. prov som tas av A0
int dacx [] = {
9,8,7,6,5,4,3,2}; //pins var 1: a dac är ansluten
int dacy [] = {
19,18,17,16,15,13,12,11}. stift var 2: a dac är ansluten
int SEK = 90. styr andra hand (90 är vinkel klockan 12)
int mint = 90. styr min hand
int timme = 120; kontroller timvisaren
flyta mincos = 0; genererar värdet för sinus och cos värde för slutpunkten i min hand
flyta minsin = 1;
float hourcos =-0.866; genererar värdet för sinus och cos värde för slutpunkten för timvisaren
flyta hoursin = 0,5;
Ponits (bitvärden) för sinus och cos vågor
unsigned char sinx [] =
{
127,130,133,136,139,142,145,148,151,154,157,160,164,166,169,172,175,178,181,184,187,189,192,195, 197,200,202,205,207,210,212,214,217,219,221,223,225,227,229,231,232,234,236,237,239,240,242,
243,244,245,246,247,248,249, 250,251,251,252,252,253,253,253,253,253,254,253,253,253,253,252,252,251, 251,250,249,249,248,247,246,245,243,242,241,239,238,236,235,233,231,230, 228,226,224,222,
220,218, 215,213,211,209,206,204,201,199,196,193,191,188,185,182,180,177,174,171,168,165,162,159,156,153, 150,147,144,141,137,134,131,128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,
79,76, 73,71,68,65,62,60,57,54,52,49,47,44,42,40,38,35,33,31,29,27,25,23,22,20,18,17,15,14, 12,11,10,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,1,1,2,2,3,4,5,6,7,8,9,10,11,13,14,16,17,19,21,22,
24, 26,28,30,32,34,36,39,41,43,46,48,51,53,56,58,61,64,66,69,72,75,78,81,84,87,89,93,96, 99,102,105,108,111,114,117,120,123,127
};
unsigned char cosx [] =
{
254,253,253,253,253,252,252,251, 251,250,249,249,248,247,246,245,243,242,241,239,238,236,235,233,231,230, 228,226,224,222,220,218, 215,213,211,209,206,204,201,199,196,193,191,188,185,182,180,
177,174,171,168,165,162,159,156,153, 150,147,144,141,137,134,131,128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,79,76, 73,71,68,65,62,60,57,54,52,49,47,44,42,40,38,35,33,31,29,27,
25,23,22,20,18,17,15,14, 12,11,10,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,1,1,2,2,3,4,5,6,7,8,9,10,11,13,14,16,17,19,21,22,24, 26,28,30,32,34,36,39,41,43,46,48,51,53,56,58,61,64,66,69,72,75,
78,81,84,87,89,93,96, 99,102,105,108,111,114,117,120,123,127,130,133,136,139,142,145,148,151,154,157,160,164,166,169,172,175,178,181,184,187,189,192,195, 197,200,202,205,207,210,212,214,217,
219,221,223,225,227,229,231,232,234,236,237,239,240,242,243, 244,245,246,247,248,249, 250,251,251,252,252,253,253,253,253,253,254
};
sinus och cosinus värdet av vinkel på vilka 12 slag av klocka
flyta strokeSin [] =
{
.0000,.5000,.8666,1.000,.8666,.5000,.0000,-.5000,-.8666,-1.000,-.8666,-.5000
};
flyta strokeCos [] =
{
1.000,.8666,.5000,.0000,-.5000,-.8666,-1.000,-.8666,-.5000,.0000,.5000,.8666
};
osignerade långa changeTime; / / lagra program gångtid
void setup()
{
pinMode (PIN, indata); Ange 10 PIN-koden till insatsen
digitalWrite (PIN, hög); använda det interna pullup motståndet
PCintPort::attachInterrupt (stift, swapMode, faller);
för (int jag = 0; jag < = 7; i ++)
{
pinMode(dacx[i],OUTPUT); deklarera DAC: s som utdata
pinMode(dacy[i],OUTPUT);
}
changeTime=millis();
displayclock(); dispay "Klocka av"

displayName();

}
void loop()
{
minLine(127,127); funktionen att Visa minutvisaren
hourLine(127,127); funktionen att Visa timvisaren
Circle(); funktion för att göra en cirkel
Strokes(); funktion för att lägga till 12 stroke linjer som representerar 12-timmars klocka
secLine(127,127,sec);
IF((Millis()-changeTime) > 114)
{
SEK--;
IF(SEC==0) SEK = 360; 0 eller 360 är vinkel nummer tre på klockan
IF(SEC==90) updateMin(); När 60 SEK är avslutade flyttas min hand av 1 plats
changeTime=millis();
}
}

funktion för att beräkna och Visa temp.
anropas när avbrott genereras
void swapMode()
{

uint8_t i.
float genomsnittet.
ta N prov i rad, med en liten fördröjning
för (jag = 0; jag < numsamples; i ++) {
prover [i] = analogRead(thermistorpin);
Delay(10);
}
alla prover i genomsnitt
genomsnittliga = 0;
för (jag = 0; jag < numsamples; i ++) {
genomsnittliga += prover [i];
}
i genomsnitt / = numsamples;

konvertera värdet till motstånd
genomsnittliga = 1023 / medelvärde - 1;
genomsnittliga = seriesresistor / genomsnittliga;

float steinhart;
Steinhart = medel / thermistornominal; (R/Ro)
Steinhart = log(steinhart); ln(R/ro)
Steinhart = bcoefficient; 1/B * ln(R/Ro)
Steinhart += 1.0 / (temperaturenominal + 273.15); + (1/till)
Steinhart = 1,0 / steinhart; Invertera
Steinhart-= 273.15; konvertera till C

Steinhart=Round(Steinhart); ger oss ett heltal
T1 = steinhart/10; genererar nummer på tiotals placera
T2 = (int) steinhart % 10. genererar nummer på en plats
för (int m = 0; m < = 100; m ++)
{
Visa temp som för t.ex. "35 * C"
font(T1,50);
font(T2,100);
Degree(145);
Celcius(160);
}
SEC-= 19.
}
void updateMin()
{
Mint = mint-6;
IF(Mint==0) mint = 360;
mincos=cos(PI*Mint/180);
minsin=sin(PI*Mint/180);
IF(Mint==90) updateHour; När 60 min fullgörs flyttas timvisaren av 1 plats
}
void updateHour()
{
timme = timme-30;
IF(Hour==0) timme = 360;
hourcos=cos(PI*Hour/180);
hoursin=sin(PI*Hour/180);
}
void punkt (int x, int y) //plot en punkt på planet xy oscilloskop
{
för (int j = 0; j < = 7; j ++)
{
digitalWrite (dacx [j] ((x & 1 << j) > 0));
}
för (int j = 0; j < = 7; j ++)
{
digitalWrite (dacy [j], ((y & 1 << j) > 0));
}
}
void parallely (int a, int b int c) //function att rita en linje parallell med y-axeln (en punkt konstant på x-axeln och punkt på y-axeln varierar från b till c)
{
för (k = b; k < c, k = k + 2)
{
Point(a,k);
}
}
void parallelx (int d, int e, int f) //function för att rita en linje parallell med x axis(d is point constant on y axis and point on x axis varies from e to f)
{
för (k = e; k < f; k = k + 2)
{
Point(k,d);
}
}
void angleline (int x1, int y1, int x2, int y2) //draw en linje mellan 2 poäng på oscilloskop
{
för (int jag = 0; jag < = 200; jag = i + 4)
{
int x = x 1 + i * (x 2-x 1) / 200;
int y = y1 + i * (y2-y1) / 200;
Point(x,y);
}
}
void circle() //function att rita en cirkel
{
för (int jag = 0; jag < 256; i = i + 2) //send sin och cos vågor till DAC
{
Point(Sinx[i],cosx[i]);
}
}
void strokes()
{
för (int theta = 0; theta < 12, theta ++)
för (int r = 100; r < 125; r = r + 2)
{
Point(127+int(r*strokeCos[theta]),127+int(r*strokeSin[theta]));
}
}
void secLine (int x, int y, int theta) //function Rita sekunder hand längd 'r', i en vinkel theta, x och y utgångspunkter
{
för (int r = 0; r < 127; r = r + 2)
{
Point(x+int(r*cos(PI*theta/180)),y+int(r*sin(PI*theta/180)));
}
}
void minLine (int x, int y) //function Rita minutvisaren längd "r", på en vinkel theta (ges av globala variabler mincos och minsin), x och y utgångspunkter
{
för (int r = 0; r < 100; r = r + 2)
{
Point(x+int(r*mincos),y+int(r*minsin));
}
}
void hourLine (int x, int y) //function Rita timvisaren längd "r", på en vinkel theta (ges av globala variabler hourcos och hoursin), x och y utgångspunkter
{
för (int r = 0; r < 75; r = r + 2)
{
Point(x+int(r*hourcos),y+int(r*hoursin));
}
}
void displayclock() //display ord "Klocka av"
{
för (int f = 0; f < = 50; f ++)
KLOCKAN
{
parallely(10,135,195); C
parallelx(135,10,50);
parallelx(195,10,50);
parallely(60,135,195); L
parallelx(135,60,100);
parallely(110,135,195); O
parallely(150,135,195);
parallelx(135,110,150);
parallelx(195,110,150);
parallely(160,135,195); C
parallelx(135,160,200);
parallelx(195,160,200);
parallely(210,135,195); KARLSSON
angleline(210,165,245,195);
angleline(210,165,245,135);
GENOM
parallely(80,55,115); B
angleline(80,115,120,100);
angleline(80,85,120,100);
angleline(80,85,120,70);
angleline(80,55,120,70);
angleline (130,115,155,95), //Y
angleline(145,55,170,115);
}
}
void displayName() //display ord "MALEE och Lasse"
{
för (int g = 0; g < = 40; g ++)
{
MALEE
parallely(5,95,155); KARLSSON
angleline(5,125,40,155);
angleline(5,125,40,95);
angleline(50,95,95,125); S
parallelx(125,55,95);
angleline(55,125,90,155);
parallely(105,95,155); H
parallely(145,95,155);
parallelx(125,105,145);
parallely(155,95,155); Jag
parallely(185,95,155); T
parallelx(155,165,205);
parallely(215,95,155); Jag
parallelx(155,225,252); J
parallely(239,95,155);
angleline(239,95,225,110);
}
för (int f = 0; f < = 20; f ++)
{
angleline(65,95,87,155); A
angleline(110,95,87,155);
parallelx(120,75,100);
parallely(120,95,155); N
angleline(120,155,165,95);
parallely(165,95,155);
parallely(175,95,155); D
angleline(175,155,215,125);
angleline(175,95,215,125);
}
för (int f = 0; f < = 40; f ++)
{
FELLBOM
parallely(10,95,155); KARLSSON
angleline(10,125,55,155);
angleline(10,125,55,95);
angleline(65,95,87,155); A
angleline(110,95,87,155);
parallelx(120,75,100);
parallely(120,95,155); PERSSON
angleline(120,155,160,135);
angleline(120,115,160,135);
parallely(180,95,155); Jag
parallely(200,95,155); L
parallelx(95,200,245);
}
}
ogiltiga teckensnitt (int a, int x) //function att Visa 2 nummer av temp
{
Switch(a)
{
fall 0:
parallelx(40,x,x+40);
parallelx(110,x,x+40);
parallely(x,40,110);
parallely(x+40,40,110);
bryta;
fall 1:
parallely(x+20,40,110);
bryta;
fall 2:
parallelx(110,x,x+40);
parallelx(75,x,x+40);
parallelx(40,x,x+40);
parallely(x+40,75,110);
parallely(x,40,75);
bryta;
fall 3:
parallelx(110,x,x+40);
parallelx(75,x,x+40);
parallelx(40,x,x+40);
parallely(x+40,40,110);
bryta;
fall 4:
parallely(x,80,110);
parallely(x+40,40,110);
parallelx(80,x,x+40);
bryta;
fall 5:
parallelx(110,x,x+40);
parallelx(75,x,x+40);
parallelx(40,x,x+40);
parallely(x,75,110);
parallely(x+40,40,75);
bryta;
fall 6:
parallelx(110,x,x+40);
parallelx(75,x,x+40);
parallelx(40,x,x+40);
parallely(x,40,110);
parallely(x+40,40,75);
bryta;
fall 7:
parallely(x+40,40,110);
parallelx(110,x,x+40);
bryta;
mål 8:
parallelx(110,x,x+40);
parallelx(75,x,x+40);
parallelx(40,x,x+40);
parallely(x,40,110);
parallely(x+40,40,110);
bryta;
mål 9:
parallelx(110,x,x+40);
parallelx(75,x,x+40);
parallelx(40,x,x+40);
parallely(x,75,110);
parallely(x+40,40,110);
bryta;
}
}
void degree(int x) //display cirkel av graden
{
parallelx(110,x,x+10);
parallelx(100,x,x+10);
parallely(x,100,110);
parallely(x+10,100,110);
}
void celcius(int x) //display "C"
{
parallelx(110,x,x+40);
parallelx(40,x,x+40);
parallely(x,40,110);
}

Se Steg
Relaterade Ämnen

Bygga själv en klocka och termometer

Hej killar,I detta steg för steg instruktion,Jag vill dela mitt experiment på att skapa en klocka och termometer medArduino Mega 2560, LCD 16 x 2, termiska motstånd sensor och DS1307 RealtidsklockaFler projekt: http://rickelectronicproject.blogspot.c...

Bilens kluster klocka och äggklocka

en bil tillverkad i ett kluster med bil och en off nedskärning av seligna trä. Virket var målat och skär i en klocka profil. Själva klustret ändrades för att hålla en klocka och äggklocka, som fungerar som rev räknaren och hastighetsmätare. Det finns...

Bee Creative! ~ Sängkanten Björn klocka och lampa

Är du redo att BEE creative!?!?Tack för besöket! Detta instructable är verkligen en möjlighet för dig att vara kreativ, bli rörigt och ha en kul tid så! Projektet var avsedd att vara en sänglampa nattlampa, klocka och penna kopp för min lilla syster,...

Pandora's Clock: Nixie rör klocka och Pandora internetradio

En Nixie rör klocka med Pandora Internet Radio, baserat på Raspberry Pi med en egen designade fall, LCD-skärm, WiFi-anslutning, förstärkare och högtalare. Detta är den mest unika klockradio hittar du någonsin!Detta är också kanske den dyraste sak jag...

Dynamite ipod klocka och laddare

vad du letar på är avery realistiska dynamit ipod klocka och laddare detta bör ta mer än 30 minuter att göra detta och kostnaden är mycket låg jag arbetar på ett bättre just nu och kommer inlägget det vid ett senare datum men detta är en cool sätt at...

Kom igång med Analog.IO och elektriska Imp

Analog.IO är en ny webbplats för att dela dataströmmar från internet för saker anslutna enheter. Analog.IO kan du Visa dina data via en webbläsare, var du än är i världen. Du styr data som ritas genom en inbäddad enhet. Analog.IO är community driven...

Hur gränssnittet fukt och temperaturgivare (DHT11) till Arduino och inklusive DHT11 bibliotek.

DTH11 omfattar både fukt och temperatur sensor.Maskinvarukomponenter krävs:-1) DTH11 Fukt och temperaturgivare2) Arduino UNO3) anslutande trådar4) DTH bibliotekDu kan få sensorn DTH11 datablad från den länken nedanhttp://www.micro4you.com/files/senso...

Skapa dig en klocka med temperaturgivare, batterisensorn och larm

killar,I helgen har jag gjort mig en klocka med batterisensor, temperatursensor och alarm,Jag använder ATMEGA128 för det.Låt oss komma igångSteg 1: De komponenter jag använt jag använt denna komponenter för att bygga min klocka:1. ATMEGA1282. LCD-16...

Lätt-Made klocka och skans ställa

av någon anledning eller annan, min flickvän blir Fingerhut kataloger på en regelbunden basis. En dag kom hon över en ganska fin klocka som hon älskade:Fingerhut klockaSå när våra årsdagen och jul tid kom runt, istället för att betala $80 (eller så l...

DIY världen klocka och väder bot (Arduino + ESP8266)

Heji denna instuctable kommer du lära dig hur man gör världen klocka väder bot använda Arduino Mega och ESP8266 (på-läge).Funktioner:• personlig bot med LCD-skärm som mun, potentiometer som näsa och gröna lysdioderna som ögon• att välja ville stad/la...

Thermohygrometer med klocka och LCD-display på Arduino UNO

Dessa 7 steg kommer att driva dig genom den "konstruktionen" av en termo-hygrometer med klocka på Arduino UNO.Data och tid, luftfuktighet och temperatur visas på en LCD display 16 x 2. Om du har köpt en LCD-display och vill veta hur man korrekt...

Bygga en klocka och gåva det på X'mas

eller saker du kan göra med fyra overburned CD-skivor, en klocka kit 3 euro en battericell och lite fantasi.Material1 klocka kit (kostar 3 euro)1 batteri4 CD-skivorlimnågra dekorationer för ditt unika klockaFantasi och tidDen klocka kit jag använt ko...

Hacking någon bil med Pebble klocka och 1Sheeld

Tanken bakom projektet var att kunna styra någon bil utan att vara inne i bilen, eller fysiskt trycker instrumentpanel knappar/switchar.Använda en bärbar (Pebble watch) och 1Sheeld för Android (artighet av 1Sheeld), jag planerar att göra hela process...

Hur man gör en papper klocka och en presentförpackning från en gammal plast klocka

detta är hur våra upp-cyklade slutprodukten kommer att se ut. Jag fick denna gamla klockan från en vän till mig, och sedanDet var inte fungerar jag trodde jag kunde upcyle det in inågot som hon vill och hålla.Material du behöver för detta projektLinj...

Komma igång med analoga upptäckt 2, USB-oscilloskop, Unboxing

Något som jag tycker är otroligt bra när du bestämmer om att köpa en produkt eller inte är prova innan du köper erfarenhet.Det vill säga att kunna veta exakt vad jag får innan jag får den.På grund av detta beslutat jag att dela en unboxing upplevelse...

Arduino 8 x 8 RGB ledde matrisen Controller med 4 SKIFT register och temperaturgivare

Första hälften av denna instruktions video visar en färdiga projekt av en Arduino med 4 SKIFT register (74HC595) används för att kontrollera och 8 x 8 RGB LED-matris. Det finns också en DS18B20 temperatursensor används för att Visa temperaturen på 8...

Helgen projektet klocka datum termometer och luftfuktighet med Arduino mega

killar, jag vill dela min helg projekt på att skapa en klocka med fukt och temperaturgivare,Det är med DHT11 sensor, RTC DS1307, LCD 16 x 2 och Arduino Mega 2560,Hålla läsning och lycka tillSteg 1: Förbered alla delar behövs... i detta experiment beh...

Göra en digital "mjau" från analog klocka

Gör din analog klocka bara inte tillräckligt med saker? Vill du göra digital saker med en analog klocka?Denna tutorial ska show dig hur man gör en Kit katt klocka spela ett "mjau" ljudklipp, på exakt tid intervallerna, använda Atmega 328P-PU via...

Med en enda RGB LED (eller en LED strip) för att visa information: klocka, termometer och en konstig kommunikatör

En av de första projekten som jag gjorde med en Arduino var en jul ljus krans. I själva verket var det tillverkade av en enkel RGB LED strip skär i två, som Arduino har endast 6 hårdvara PWM utgångar. Jag ville inte det att Visa trivial regnbågar och...