Horloge de portée : capteur analogique horloge et température sur un Oscilloscope (3 / 3 étapes)

Étape 3: Code

Code

#include < PinChangeInt.h >
#include < PinChangeIntConfig.h >
int PIN = 10 ;       broche à laquelle interruption doit être générée (broche reliée à l’interrupteur qui, une fois pressé la volonté montrer temp sur oscilloscope)

int thermistorpin = A0 ;    quelle broche analogique se connecter
int thermistornominal = 150 ;     résistance à 25 degrés C
int temperaturenominal = 25 ;   Temp. pour la résistance nominale (presque toujours 25 C)
int numsamples = 100 ;   Combien d’échantillons à prendre et en moyenne, plus dure plus longtemps
mais il est plus « lisse »
int bcoefficient = 3950 ;    Le coefficient bêta de la thermistance (généralement 3000-4000)
int seriesresistor = 10000 ;     la valeur de la résistance de « l’autre »
int k ;
int t1, t2 ;   2 chiffres de temp
int échantillons [100] ;   aucun. d’échantillons à prélever par A0
int dacx [] = {}
9,8,7,6,5,4,3,2}; //pins où 1re dac est connecté
int [] dacy = {}
19,18,17,16,15,13,12,11} ;  broches où 2ème dac est connecté
int sec = 90 ;      contrôle de seconde main (90 est angle à 12:00)
int menthe = 90 ;     les contrôles min main
int h = 120 ;   aiguille des heures des contrôles
float mincos = 0 ;  génère la valeur de sinus et cos pour le point final du min main
float minsin = 1 ;
float hourcos =-0,866 ;   génère la valeur de sinus et cos pour l’extrémité de l’aiguille des heures
float 24Construit = 0,5 ;
se (valeurs de bit) pour les ondes sinusoïdales et cos
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
};
valeur de sinus et cosinus de l’angle à laquelle 12 coups de l’horloge
float [] strokeSin =
{
.0000,.5000,.8666,1.000,.8666,.5000,.0000,-.5000,-.8666,-1.000,-.8666,-.5000
};
float [] strokeCos =
{
1.000,.8666,.5000,.0000,-.5000,-.8666,-1.000,-.8666,-.5000,.0000,.5000,.8666
};
unsigned long changeTime; / / store programme durée
void setup()
{
pinMode (entrée, PIN) ;     la broche 10 à l’entrée de la valeur
digitalWrite (PIN, élevé) ; utiliser la résistance pullup interne
PCintPort::attachInterrupt (tige, swapMode, chute) ;
pour (int i = 0; i < = 7; i ++)
{
pinMode(dacx[i],OUTPUT) ;  déclarer du CAD en sortie
pinMode(dacy[i],OUTPUT) ;
}
changeTime=millis() ;
displayclock() ;   retour « CLOCK BY »

displayName() ;

}
void loop()
{
minLine(127,127) ;    fonction pour afficher l’aiguille des minutes
hourLine(127,127) ;   fonction pour afficher l’aiguille des heures
Circle() ;    fonction pour faire un cercle
Strokes() ;  fonction pour ajouter 12 lignes de course, soit 12 heures de l’horloge
secLine(127,127,sec) ;
if((Millis()-changeTime) > 114)
{
s--;
if(sec==0) s = 360 ;  0 ou 360 est angle au numéro trois sur horloge
if(sec==90) updateMin() ;  Lorsque 60sec sont terminées min bouge de 1 place
changeTime=millis() ;
}
}

fonction pour calculer et afficher le temp.
est appelée lorsque l’interruption est générée
Sub swapMode()
{

uint8_t i ;
flotteur en moyenne ;
prélever des échantillons de N dans une rangée, avec un léger retard
pour (i = 0; i < numsamples; i ++) {}
les échantillons [i] = analogRead(thermistorpin) ;
Delay(10) ;
}
moyenne de tous les échantillons
moyenne = 0 ;
pour (i = 0; i < numsamples; i ++) {}
échantillons de moyenne += [i] ;
}
moyenne / = numsamples ;

convertir la valeur de résistance
moyenne = 1023 / moyenne - 1 ;
moyenne = seriesresistor / moyenne ;

flotteur steinhart ;
Steinhart = moyenne / thermistornominal ;     (R/Ro)
Steinhart = log(steinhart) ;                  ln(R/RO)
Steinhart / = bcoefficient ;                   1/B * ln(R/Ro)
Steinhart += 1.0 / (temperaturenominal + 273,15) ; + (1/to)
Steinhart = 1,0 / steinhart ;                 Inverti
Steinhart-= 273.15 ;                         convertir en C

Steinhart=Round(Steinhart) ;                  nous donne un nombre entier
T1 = steinhart/10 ;                             génère le nombre à plusieurs dizaines placer
T2 = (int) steinhart % 10 ;                        génère le nombre à ceux endroit
pour (int m = 0; m < = 100; m ++)
{
afficher la température en ce qui concerne par exemple "35 * C"
font(T1,50) ;
font(T2,100) ;
degree(145) ;
Celcius(160) ;
}
s-= 19 ;
}
Sub updateMin()
{
monnaie = menthe-6 ;
if(Mint==0) menthe = 360 ;
mincos=cos(pi*Mint/180) ;
minsin=Sin(pi*Mint/180) ;
if(Mint==90) updateHour ;   Quand 60 min sont terminés aiguille des heures est proposé par 1 place
}
Sub updateHour()
{
heure = heure-30 ;
if(Hour==0) heure = 360 ;
hourcos=cos(pi*Hour/180) ;
hoursin=Sin(pi*Hour/180) ;
}
//plot Sub point (int x, int y) un point sur le plan xy d’oscilloscope
{
pour (int j = 0; j < = 7; j ++)
{
digitalWrite (dacx [j], ((x & 1 << j) > 0)) ;
}
pour (int j = 0; j < = 7; j ++)
{
digitalWrite (dacy [j], ((y & 1 << j) > 0)) ;
}
}
void en parallèle (int a, int b, int c) //function de tracer une ligne parallèle à l’axe des y (un point constante sur axe x et point sur l’axe des y varie entre b et c)
{
pour (k = b; k < c; k = k + 2)
{
point(a,k) ;
}
}
void parallelx (int d, int e, int f) //function pour dessiner une ligne parallèle au x axis(d is point constant on y axis and point on x axis varies from e to f)
{
pour (k = e; k < f; k = k + 2)
{
point(k,d) ;
}
}
void angleline (int x1, int y1, int x2, int y2) //draw une ligne entre 2 points sur l’oscilloscope
{
pour (int i = 0; j’ai < = 200 ; j’ai = i + 4)
{
int x = x 1 + i * (x 2-x 1) / 200 ;
int y = y1 + i * (y2-y1) / 200 ;
point(x,y) ;
}
}
circle() Sub //function pour dessiner un cercle
{
pour (int i = 0; j’ai < 256; i = i + 2) //send sin et cos ondes aux CED
{
point(SiNx[i],cosx[i]) ;
}
}
Sub strokes()
{
pour (thêta int = 0; thêta < 12 ; thêta ++)
pour (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 thêta) //function dessiner secondes main de longueur « r », à un angle thêta, x et y sont points de départ
{
pour (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 dessiner l’aiguille des minutes de longueur « r », à un theta angle (donnée par minsin et mincos des variables globales), x et y sont des points de départ
{
pour (int r = 0; r < 100; r = r + 2)
{
point(x+int(r*mincos),y+int(r*minsin)) ;
}
}
void hourLine (int x, int y) //function dessiner l’aiguille des heures de longueur « r », à un theta angle (donné par 24Construit et hourcos des variables globales), x et y sont des points de départ
{
pour (int r = 0; r < 75; r = r + 2)
{
point(x+int(r*hourcos),y+int(r*hoursin)) ;
}
}
void displayclock() //display mots « CLOCK BY »
{
pour (int f = 0; f < = 50; f ++)
HORLOGE
{
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) ;  K
angleline(210,165,245,195) ;
angleline(210,165,245,135) ;
PAR
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 mots « Christophe et Khaled »
{
pour (g int = 0; g < = 40; g ++)
{
CHRISTOPHE
parallely(5,95,155) ;  K
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) ;   J’ai
parallely(185,95,155) ;   T
parallelx(155,165,205) ;
parallely(215,95,155) ;  J’ai
parallelx(155,225,252) ;  J
parallely(239,95,155) ;
angleline(239,95,225,110) ;
}
pour (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) ;
}
pour (int f = 0; f < = 40; f ++)
{
KAPIL
parallely(10,95,155) ;  K
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) ;  P
angleline(120,155,160,135) ;
angleline(120,115,160,135) ;
parallely(180,95,155) ;  J’ai
parallely(200,95,155) ;  L
parallelx(95,200,245) ;
}
}
Sub polices (int a, int x) //function pour afficher les 2 numéros du temp
{
Switch(a)
{
case 0 :
parallelx(40,x,x+40) ;
parallelx(110,x,x+40) ;
parallely(x,40,110) ;
parallely(x+40,40,110) ;
rupture ;
cas 1 :
parallely(x+20,40,110) ;
rupture ;
cas 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) ;
rupture ;
cas 3 :
parallelx(110,x,x+40) ;
parallelx(75,x,x+40) ;
parallelx(40,x,x+40) ;
parallely(x+40,40,110) ;
rupture ;
cas 4 :
parallely(x,80,110) ;
parallely(x+40,40,110) ;
parallelx(80,x,x+40) ;
rupture ;
cas no 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) ;
rupture ;
cas 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) ;
rupture ;
cas 7 :
parallely(x+40,40,110) ;
parallelx(110,x,x+40) ;
rupture ;
cas 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) ;
rupture ;
cas 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) ;
rupture ;
}
}
sub degree(int x) //display cercle du degré
{
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) ;
}

Articles Liés

Mesurer la température sur le web avec Arduino Ethernet et DS18B20 capteur

Mesurer la température sur le web avec Arduino Ethernet et DS18B20 capteur

Bonjour à tous,Tout d'abord, je tiens à vous dire que je ne suis pas un programmeur. Mais j'aime faire de nouvelles choses, surtout quand elle est liée à l'électronique. Ici, j'ai intégré un serveur Web pour Arduino Ethernet avec un capteur de tempér
Arduino Nano TM1637 affichage à 4 chiffres capteur DHT11 d’humidité température

Arduino Nano TM1637 affichage à 4 chiffres capteur DHT11 d’humidité température

Arduino Nano TM1637 4 chiffres affichage capteur d'humidité température DHT11YouTube VidéoDocuments
ESP8266 ADC - capteurs analogiques multiples

ESP8266 ADC - capteurs analogiques multiples

Bien que le ESP8266 -07 et -12 seulement ont une broche d'ADC, cela ne signifie pas que vous êtes limité à un seul capteur analogique par module. Vous pouvez utiliser de nombreuses !Toutefois, afin d'utiliser plusieurs capteurs vous devrez "multiplex
Capteur d’humidité et de température MINI Si7021

Capteur d’humidité et de température MINI Si7021

Synopsis: À ± 0,3 % exactitude (température et humidité), le Si7021 Mini est un capteur très précis pour les données de température et d'humidité accumulés. L'architecture de bus I2C offre d'acquisition de données rapide, détection d'erreurs et de so
Tutoriel de capteur de température !

Tutoriel de capteur de température !

Ce qui est un capteur de température?Un capteur de température analogique est assez facile à expliquer, il s'agit d'une puce électronique qui vous indique quelle est la température ambiante !Ces capteurs utilisent une technique à l'état solide pour d
Capteur de température de sortie des valeurs sur smartphone Android

Capteur de température de sortie des valeurs sur smartphone Android

Il s'agit de projet de sonde de température, valeur de température sera transmis sur smartphone Android via Bluetooth et affiché sur son écran, avec RemoteXY Bibliothèque utilisée. Un tel capteur de température peut être placé dans un endroit inacces
Capteur de température LM35 avec enregistreur de données sur carte SD sur Intel Edison

Capteur de température LM35 avec enregistreur de données sur carte SD sur Intel Edison

-Démontre l'utilisation d'un capteur LM35 sur Intel Edison pour mesurer la température sur une longue période allant de plusieurs heures pour les semaines et les journaux, les lectures de température de la sonde sur une carte SD insérée à bord, toute
Capteur de température DS18B20 ESP8266, IDE Arduino, nuage de EasyIoT

Capteur de température DS18B20 ESP8266, IDE Arduino, nuage de EasyIoT

Dans ce tutoriel, nous montrerons comment construire l'enregistreur de température DS18B20 ESP8266 WiFi connecté au EasyIoT Cloud. Tout le matériel coûte moins de 5$ sur ebay.EasyIoT nuage travaille également sur téléphone mobile ou tablette. Applica
Comment étalonner un capteur de température à bas prix

Comment étalonner un capteur de température à bas prix

Bonjour à tousJ'ai beaucoup de projets électroniques qui implique la lecture de la température. Stations météorologiques, salle de surveillance, ou tout simplement pour vérifier la température d'une pièce et déclencher un fan, citer quelques applicat
Arduino Uno : Capteur de température avec affichage

Arduino Uno : Capteur de température avec affichage

J'ai écrit un code qui affiche la température sur un écran LCD. J'ai utilisé ces composants :Arduino Uno Conseil (rév. 3)affichage de 2 x 16 caractères LCDcarte de prototypageCapteur de température TMP36PotentiomètreÉtape 1: Étape 1: câblageCâblage d
Capteur de température LinkitONE

Capteur de température LinkitONE

Bonjour amis que vous tous pouvez être trouver cool en collaborant avec les dernière avancée gadget électronique. L'une d'elle est la « LinkitONE » un contrôleur maître. Avez-vous déjà entendu parler à ce sujet. À l'aide d'un LinkitONE travail avec g
Capteur de température avec LED

Capteur de température avec LED

J'ai été tout d'abord intéressé par l'idée de créer une nouveau chauffable Chope, qui détecte la température du liquide et s'allume ou s'éteint selon la température correspondante. Pour ce projet, j'ai fait un modèle réduit du présent.À l'aide d'une
Capteur de température de Linkit One

Capteur de température de Linkit One

Dans ce instructable je vais comment vous comment mesurer la température à l'aide d'un un Linkit et un capteur de température Lm35. Ce projet peut être une partie d'un moniteur sans fil de temps, si vous n'avez pas vu mon instructables précédent s'il
Capteur de température simple LED Digital

Capteur de température simple LED Digital

Une sonde de température électronique Simple, peu coûteux, numériqueH. William James, août 2015Abstrait Clignotant LED contiennent une petite puce qui les amènent à clignoter en permanence et s'éteint quand une tension est appliquée. Cette étude mont