Sol Mate (4 / 6 étapes)

Étape 4: Structure entière du code Arduino

#include
#include « rgb_lcd.h » #include #include

rgb_lcd lcd ;

const int blanc [] = {255, 255, 255} ; const int rouge [] = {255, 0, 0} ;

const int pinRot = A0 ; const int pinTemp = A1 ; const int pinIR = A2 ; const int pinUV = A3 ;

const int pinBut = 7 ; const int pinBuz = 8 ;

const int tempref = 3975 ;

int statecount = 0 ; int tanperc = 0 ; int tantarg = 0 ; flotteur alltemp [8] = {0, 0, 0, 0, 0, 0, 0, 0} ; flotteur allIR [8] = {0, 0, 0, 0, 0, 0, 0, 0} ; char martinsebastien1970 [8] = {0, 0, 0, 0, 0, 0, 0, 0} ; pt int = 0 ; float acctemp = 0 ; flotteur accIR = 0 ; float accUV = 0 ; exposition de flotter = 0 ; const int displayrate = 40 ; const int burnrate = 170 ;

int maxuv = 0 ; maxtemp int = 0 ; unsigned long starttime = 0 ; unsigned long endtime = 0 ;

void setup() {Serial.begin(9600), lcd.begin (16, 2); lcd.setRGB (blanc [0], [1], white[2]) ; lcd.setCursor (0, 0); lcd.print ("Bonjour, je suis votre"); lcd.setCursor (0, 1); lcd.print ("Solmate : date") ; pinMode (pinBut, entrée) ; digitalWrite (pinBut, HIGH) ; pinMode (pinBuz, sortie) ; statecount = 0 ; Delay(4000) ; setTan() ; }

void clrRow(int row) {lcd.setCursor (0, row); lcd.print("");}

Sub setTan() {lcd.setRGB (blanc [0], [1], white[2]) lcd.setCursor (0, 0); lcd.print ("Set votre tan %!"); clrRow(1) ; tandis que (! digitalRead(pinBut)) {int rotread = analogRead(pinRot) ; tanperc = rotread * 100 / 1015 ; tantarg = rotread * répercussions / 1015 ; char perc [] = "100 %"; int targ = tanperc ; pour (int j’ai = 2; J’ai > = 0; i--) {si (j’ai < 2 & & targ == 0) {perc [i] = ' ';} else {perc [i] = '0' + targ % 10;} targ / = 10;} lcd.setCursor (6 , 1); LCD.Print(PERC) ; Delay(100) ; } exposition = 0 ; tandis que (digitalRead(pinBut)) ; LCD.Clear() ; StartTime = millis() ; maxuv = 0 ; maxtemp = 0 ; }

readFile() booléens {//Get le résultat de la requête de données de fichier char [16] ; FICHIER * fp ; FP = fopen (« /tmp/tantweet.txt », « r ») ; if(FP!=null) {fgets (données, 16, fp); fclose(fp) ; if (data [0] == « 1 ») return true ; sinon retourne false;} else {return false;}}

void tanned() {endtime = millis() ; lcd.setRGB (rouge [0], rouge [1], red[2]) clrRow(0) ; clrRow(1) ; lcd.setCursor (0, 0); lcd.print ("parfaitement bronzée!"); digitalWrite (pinBuz, HIGH); delay(500) ; digitalWrite (pinBuz, basse); delay(500) ; digitalWrite (pinBuz, HIGH); delay(500) ; digitalWrite (pinBuz, basse); delay(500) ; digitalWrite (pinBuz, HIGH); delay(500) ; digitalWrite (pinBuz, basse); delay(500) ; lcd.setRGB (blanc [0], [1], white[2]) ; clrRow(0) ; lcd.setCursor (0 , 0); LCD.Print ("Tweet it?") ; tweet int = 0 ; tandis que (! digitalRead(pinBut)) {//select oui ou non int rotread = analogRead(pinRot) ; lcd.setCursor (0, 1); if (rotread < 512) {lcd.print ("> Oui non") ; Tweet = 1 ; } else {lcd.print ("Yes > non") ; Tweet = 0 ; } delay(100) ; } tout en (digitalRead(pinBut)) ; Si (tweet == 1) {String cmd = « python /home/root/test7.py -m » ; CMD = cmd + tanperc + « -e » ; CMD = cmd + ((endtime-starttime)/60000) + "-t" ; CMD = cmd + maxtemp + « -u » ; CMD = cmd + maxuv + "> /tmp/tantweet.txt" ; Exécuter la requête et obtenir le résultat system(cmd.buffer) ; LCD.Clear() ; Si (readFile()) {lcd.setRGB (blanc [0], [1], white[2]) ; lcd.clear() ; lcd.setCursor (0, 0); lcd.print("Tweeted!");} else {lcd.setRGB (blanc [0], [1], white[2]) ; lcd.clear() ; lcd.setCursor (0, 0); lcd.print ("Failed to"); lcd.setCursor (0, 1); lcd.print("tweet...");} Delay(4000) ; } }

void loop() {Serial.println("hello") ; //check si fini si (exposition > = tantarg) {tanned() ; setTan();} else {//check si réinitialiser si (digitalRead(pinBut)) {while (digitalRead(pinBut)) ; setTan();}}

mise à jour de tous les capteurs entrées //temperature int tempread = analogRead(pinTemp) ; flotteur res = (float)(1023-tempread) * 10000/tempread ; temp de flotteur = 1 / (log (res/10000) /tempref+1/298.15) -273,15 ; Temp = temp * 1.8 + 32 ; acctemp += temp - alltemp [pt] ; Alltemp [pt] = temp ; Serial.Print("Temp:") ; Serial.println(temp) ; Flotteur de UV uv = analogRead(pinUV) ; UV = uv * 4980.0/1023.0 * 0,307 / 200,0 ; accUV += uv - martinsebastien1970 [pt] ; martinsebastien1970 [pt] = uv ; Serial.Print("UV:") ; Serial.println(accUV/8) ; PT = (pt < 7? pt + 1:0) ; sortie de données toutes les 0,5 secondes si (statecount % 10 == 0) {si (acctemp/8 > maxtemp) {maxtemp = (acctemp/8);} si (accUV/8 > maxuv) {maxuv = (accUV/8);} si (statecount < displayrate) {tampon de char //temperature [16]; sprintf (buffer, « Temp %0.1f F », acctemp/8); clrRow(0) ; lcd.setCursor (2, 0); lcd.print(buffer);} else {tampon de char //UV [16]; sprintf (buffer, « Indice UV %0.1f », accUV/8); clrRow(0) ; lcd.setCursor (2 , 0); LCD.Print(buffer) ; } //update tan lcd.setCursor (0, 1) ; pour (int i = 0; i < 16 * exposition / tantarg; i ++) {lcd.print("X");}} exposition += uv/600 ; statecount = (statecount < 2 * displayrate? statecount + 1: 0) ; Delay(100) ; }

Articles Liés

Sole Mat

Sole Mat

Hey tout le monde !J'ai remarqué récemment que j'ai eu quelques vieilles espadrilles située autour de ma maison qui n'étaient plus en usage et au lieu de les jeter que je voulais faire quelque chose avec eux.  En même temps, j'ai aussi remarqué que m
Vieille serviette pour un tapis de sol de moustache

Vieille serviette pour un tapis de sol de moustache

Lors d'une de mes session traque aléatoire instagram, je suis tombé sur une photo d'un tapis de sol vraiment cool sous la forme d'une moustache. Instantanément, j'ai décidé que je vais faire un pour moi. À l'aide d'une serviette a été ma première pen
Sachets étanches, presque gratuit !

Sachets étanches, presque gratuit !

Super Simple bricolage étanches pochettes qui coûtent presque rien à faire !Bienvenue à notre premier Instructable. Nous sommes « long temps auditeurs et auditrices, premier temps appelants » et il est grand temps de que nous remettre quelque chose d
Comment faire des chaussons de maison chaude

Comment faire des chaussons de maison chaude

j'ai besoin juste un simple poussoir pour garder mes pieds au chaud sur notre ciment froid Floored cuisine et la salle de bain.  J'ai eu cette idée du projet chausson rose.Étape 1: fournituresTissu de •Outer de fournitures (coton ou flanelle ou quoi
Un très RobotGeek Halloween

Un très RobotGeek Halloween

Vous êtes prêt à ajouter un petit Arduino pour vos décorations d'Halloween ? À l'aide Kit de l'expérimentateur RobotGeek Floor Mat et quelques pièces supplémentaires et les accessoires vous pouvez automatiser tous vos truc et purificateurs d'effarouc
Arduino Lockbox avec solénoïde et matériel RFID & Custom

Arduino Lockbox avec solénoïde et matériel RFID & Custom

Nous allons faire un lockbox ! Nous sommes allés sur les principaux points de ce projet dans la boîte de serrure contrôlée Arduino avec solénoïde et RFID, mais beaucoup de gens ont été laissés se sentir comme on n'a pas passé une quantité suffisante
Boire des sous-verres de restes de matériaux de revêtement de sol

Boire des sous-verres de restes de matériaux de revêtement de sol

chaque fois que vous installez un nouveau plancher, vous avez des restes.  J'ai posé quelques stratifié récemment et a pensé que je pouvais faire dans les restes d'avant qu'ils ai jetés.  Court toujours sur les montagnes russes à cause de mes habitud
Le vide « facile » toilettes projet de compostage : Partie 1 - travaux de sol

Le vide « facile » toilettes projet de compostage : Partie 1 - travaux de sol

Depuis l'invention de la chasse d'eau WC en 1596, la race humaine a été imprudemment gaspiller une ressource extrêmement importante et contaminer nos océans avec les mêmes. Maintenant, enfin, la technologie est disponible pour tous et chacun d'entre
Sonde d’humidité du sol framboise Pi

Sonde d’humidité du sol framboise Pi

L'agriculture consomme entre 80 et 90 % de toutes les eaux douces aux Etats-Unis. Un moyen facile de conserver l'eau dans le secteur agricole est d'installer une sonde d'humidité du sol. Capteurs d'humidité de sol mesurent la quantité d'eau dans le s
Piquet de sol GoPro

Piquet de sol GoPro

J'ai vu des piquets de sol spécialement conçu pour les caméras avec des montures de style GoPro, mais ils sont tous assument qu'ils vont aller dans la terre molle. Comme quiconque a jamais planté une tente peut en témoigner, ce n'est pas toujours le
Impression des motifs conducteurs sur TfCD matière souple

Impression des motifs conducteurs sur TfCD matière souple

Dans ce instructable, nous donnerons un didacticiel de base sur la façon d'imprimer des motifs conducteurs sur matériaux souples.Ce qui est « impression des motifs conducteurs » ?Une conductrice est un réseau d'un matériau conducteur qui conduit l'én
Vitesse haute Precision micro perceuse de 'Matériel utile'

Vitesse haute Precision micro perceuse de 'Matériel utile'

Fabriqué de précision haute vitesse micro perceuse principalement du "matériel utile » (quelqu'un d'autre « junk » et de la ferraille)Mon premier Instructable, essayez de ne pas être trop méchant.Un grand Merci à Andrea Biffi pour poster sa perceuse
Élever des graines sans sol !

Élever des graines sans sol !

Oh les endroits ils vont grandir ! Si vous voulez les manger, cultivez-les ou les jeter dans une maraca, les graines sont des valises de la nature de la magie. De la plus petite graine orchidée au 1/35,000,000th d'une once de la plus grande graine de
How To Grow aliments du sol dans les tuyaux, (en particulier-plantes)

How To Grow aliments du sol dans les tuyaux, (en particulier-plantes)

Salut Voici mon instructable sur comment faire pousser des légumes du sol pour éviter les parasites, diminuer la consommation d'eau, organiquement fertiliser et enregistrer vous flexion plus pour ramasser les légumes donc pas plus mal de dos. Égaleme