Advertisement
Walhfort

SNAC - Slave

Jun 2nd, 2015
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.23 KB | None | 0 0
  1. //Temperature + humidité
  2. #include <Wire.h>
  3. #include "Adafruit_MCP9808.h"
  4.  
  5. #include <string.h>//Particule
  6. #include <Servo.h>
  7.  
  8. Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();// Create the MCP9808 temperature sensor object
  9. Servo myservo;// Créé l'objet myservo
  10.  
  11. int incomingByte = 0;
  12.  
  13.  
  14. int HumPin = A1;//Port du capteur d'humidité
  15. int DustPin = 8;//Pin particle
  16. int UVPin = 5;//Pin UV
  17. int ResistPin = 4;//Pin Resistance
  18. int VentPin = 3;
  19. int ServoPin = 6;
  20.  
  21. int EtatUV = 0;
  22. int EtatRes = 0;
  23. int EtatVent = 0;
  24. int EtatServo = 0;
  25.  
  26. //Particule
  27. unsigned long duration;
  28. unsigned long starttime;
  29. unsigned long endtime;
  30. unsigned long sampletime_ms = 30000;
  31. unsigned long lowpulseoccupancy = 0;
  32. float ratio;
  33. float concentration;
  34. float p;
  35.  
  36.  
  37.  
  38. void setup() {
  39.   Serial.begin(9600);
  40.   pinMode(UVPin,OUTPUT);
  41.   pinMode(ResistPin,OUTPUT);
  42.   pinMode(VentPin,OUTPUT);
  43.   pinMode(DustPin,INPUT);
  44.  
  45.   starttime = millis();
  46. }
  47.  
  48. void loop() {
  49.   if(Serial.available() > 0){
  50.     incomingByte = Serial.read();
  51.    
  52.     if(incomingByte == 'A'){
  53.       myservo.attach(ServoPin);
  54.       digitalWrite(UVPin, HIGH); EtatUV = 1;
  55.       digitalWrite(ResistPin, HIGH); EtatRes = 1;
  56.       digitalWrite(VentPin, HIGH); EtatVent = 1;
  57.       myservo.write(88); EtatServo = 1;
  58.       incomingByte = 0;
  59.     }
  60.     if(incomingByte == 'B'){
  61.       myservo.attach(ServoPin);
  62.       digitalWrite(UVPin, HIGH); EtatUV = 1;
  63.       digitalWrite(ResistPin, LOW); EtatRes = 0;
  64.       digitalWrite(VentPin, HIGH); EtatVent = 1;
  65.       myservo.write(88); EtatServo = 1;
  66.       incomingByte = 0;
  67.     }
  68.     if(incomingByte == 'C'){
  69.       digitalWrite(UVPin, LOW); EtatUV = 0;
  70.       digitalWrite(ResistPin, HIGH); EtatRes = 1;
  71.       digitalWrite(VentPin, HIGH); EtatVent = 1;
  72.       myservo.detach(); EtatServo = 0;
  73.       incomingByte = 0;
  74.     }
  75.    
  76.     if(incomingByte == 'D'){
  77.       Serial.write(Temperature());
  78.       Serial.write(Humidite());
  79.       Serial.write(Part());
  80.       incomingByte = 0;
  81.     }
  82.     if(incomingByte == 'E'){
  83.       Serial.write(EtatUV);
  84.       Serial.write(EtatRes);
  85.       Serial.write(EtatVent);
  86.       incomingByte = 0;
  87.     }
  88.     if(incomingByte == 'F'){
  89.       digitalWrite(UVPin, LOW); EtatUV = 0;
  90.       digitalWrite(ResistPin, LOW); EtatRes = 0;
  91.       digitalWrite(VentPin, LOW); EtatVent = 0;
  92.       myservo.detach(); EtatServo = 0;
  93.       incomingByte = 0;
  94.     }
  95.   }
  96.  
  97.  
  98. }
  99.  
  100. byte Temperature() {
  101.   /*
  102.   float c = tempsensor.readTempC();
  103.   c = (byte)(2 * c + 0.5);
  104.   return c;
  105.   */
  106.   return 5;
  107. }
  108.  
  109. byte Humidite() {
  110.   /*
  111.   int h = analogRead(HumPin);
  112.   int i = 5.0 * (0.0062 * h + 0.16);
  113.   i = (byte)(i + 0.5);
  114.   return i;
  115.   */
  116.   return 5;
  117. }
  118.  
  119.  
  120. byte Part(){
  121.   /*
  122.     //Capteur de particule
  123.   duration = pulseIn(DustPin, LOW);//Recuperation du temps bas sur l'onde PWM
  124.   lowpulseoccupancy += duration;
  125.   endtime = millis();
  126.   if ((endtime-starttime) > sampletime_ms){
  127.  
  128.     ratio = (lowpulseoccupancy-endtime+starttime + sampletime_ms)/(sampletime_ms*10.0);  // Integer percentage 0=>100
  129.     concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
  130.     lowpulseoccupancy = 0;
  131.     starttime = millis();
  132.    
  133.     i = (byte) concentration;
  134.    
  135.     return i;
  136.   }
  137.   */
  138.   return 4;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement