projets:2019:stagefevrierubo
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
projets:2019:stagefevrierubo [2019/02/18 22:18] – christian.jacolot | projets:2019:stagefevrierubo [2019/02/20 14:19] – christian.jacolot | ||
---|---|---|---|
Ligne 208: | Ligne 208: | ||
Nodered flow: | Nodered flow: | ||
{{ : | {{ : | ||
+ | |||
+ | |||
+ | Avec servo moteur | ||
+ | < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | VarSpeedServo myservo; | ||
+ | // twelve servo objects can be created on most boards | ||
+ | |||
+ | int pos = 0; // variable to store the servo position | ||
+ | int positionServo = 0; | ||
+ | int speedServo = 100; | ||
+ | |||
+ | // Serial reading buffer | ||
+ | const byte numChars = 60; | ||
+ | char receivedChars[numChars]; | ||
+ | boolean newData = false; | ||
+ | |||
+ | StaticJsonBuffer< | ||
+ | |||
+ | void recvWithEndMarker() { | ||
+ | static byte ndx = 0; | ||
+ | char endMarker = ' | ||
+ | char rc; | ||
+ | |||
+ | while (Serial.available() > 0 && newData == false) { | ||
+ | rc = Serial.read(); | ||
+ | |||
+ | if (rc != endMarker) { | ||
+ | receivedChars[ndx] = rc; | ||
+ | ndx++; | ||
+ | if (ndx >= numChars) { | ||
+ | ndx = numChars - 1; | ||
+ | } | ||
+ | } | ||
+ | else { | ||
+ | receivedChars[ndx] = ' | ||
+ | ndx = 0; | ||
+ | newData = true; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | void setup() { | ||
+ | pinMode(9, OUTPUT); | ||
+ | myservo.attach(9); | ||
+ | Serial.begin(9600); | ||
+ | // myservo.write(positionServo, | ||
+ | newData = false; | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | recvWithEndMarker(); | ||
+ | if (newData == true) { | ||
+ | JsonObject& | ||
+ | |||
+ | if (!root.success()) { | ||
+ | Serial.println(" | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // Fetch values. | ||
+ | // | ||
+ | // Most of the time, you can rely on the implicit casts. | ||
+ | // In other case, you can do root[" | ||
+ | if(root.containsKey(" | ||
+ | positionServo = root[" | ||
+ | speedServo = root[" | ||
+ | |||
+ | // Print values. | ||
+ | Serial.println(positionServo); | ||
+ | Serial.println(speedServo); | ||
+ | // myservo.write(positionServo, | ||
+ | } else { | ||
+ | Serial.println(" | ||
+ | } | ||
+ | | ||
+ | newData = false; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | Arduino: Programme complet (JSON, relai, ventilo, LDR, DHT11, servo-moteur): | ||
+ | < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include " | ||
+ | |||
+ | #define LDRPIN 0 | ||
+ | #define DHTPIN 2 // Digital pin connected to the DHT sensor | ||
+ | #define VENTILOPIN 7 | ||
+ | #define RELAIPIN 8 | ||
+ | #define SERVOPIN 9 | ||
+ | |||
+ | #define DHTTYPE DHT11 // DHT 11 | ||
+ | DHT dht(DHTPIN, DHTTYPE); | ||
+ | |||
+ | unsigned long time; | ||
+ | unsigned long diff; | ||
+ | int ldrValue = 0; | ||
+ | |||
+ | int relayState = LOW; | ||
+ | int ventiloState = LOW; | ||
+ | |||
+ | VarSpeedServo myservo; | ||
+ | |||
+ | int positionServo = 0; | ||
+ | int speedServo = 100; | ||
+ | |||
+ | // Serial reading buffer | ||
+ | const byte numChars = 60; | ||
+ | char receivedChars[numChars]; | ||
+ | boolean newData = false; | ||
+ | |||
+ | void recvWithEndMarker() { | ||
+ | static byte ndx = 0; | ||
+ | char endMarker = ' | ||
+ | char rc; | ||
+ | |||
+ | while (Serial.available() > 0 && newData == false) { | ||
+ | rc = Serial.read(); | ||
+ | |||
+ | if (rc != endMarker) { | ||
+ | receivedChars[ndx] = rc; | ||
+ | ndx++; | ||
+ | if (ndx >= numChars) { | ||
+ | ndx = numChars - 1; | ||
+ | } | ||
+ | } | ||
+ | else { | ||
+ | receivedChars[ndx] = ' | ||
+ | ndx = 0; | ||
+ | newData = true; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | void setup() { | ||
+ | pinMode(VENTILOPIN, | ||
+ | pinMode(RELAIPIN, | ||
+ | pinMode(SERVOPIN, | ||
+ | |||
+ | time = millis(); | ||
+ | dht.begin(); | ||
+ | myservo.attach(9); | ||
+ | Serial.begin(9600); | ||
+ | newData = false; | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | StaticJsonBuffer< | ||
+ | recvWithEndMarker(); | ||
+ | if (newData == true) { | ||
+ | JsonObject& | ||
+ | |||
+ | if (!root.success()) { | ||
+ | Serial.println(" | ||
+ | return; | ||
+ | } | ||
+ | if(root.containsKey(" | ||
+ | positionServo = root[" | ||
+ | speedServo = root[" | ||
+ | myservo.write(positionServo, | ||
+ | } else if (root.containsKey(" | ||
+ | int ventiloValue = root[" | ||
+ | if (ventiloValue == 1) { | ||
+ | ventiloState = HIGH; | ||
+ | } else { | ||
+ | ventiloState = LOW; | ||
+ | } | ||
+ | } else if (root.containsKey(" | ||
+ | int relaiValue = root[" | ||
+ | if (relaiValue == 1) { | ||
+ | relayState = HIGH; | ||
+ | } else { | ||
+ | relayState = LOW; | ||
+ | } | ||
+ | } else { | ||
+ | Serial.println(" | ||
+ | } | ||
+ | | ||
+ | newData = false; | ||
+ | } | ||
+ | diff = millis() - time; | ||
+ | if (diff >= 2000) { | ||
+ | time = millis(); | ||
+ | float h = dht.readHumidity(); | ||
+ | float t = dht.readTemperature(); | ||
+ | // read the value from the sensor: | ||
+ | ldrValue = analogRead(LDRPIN); | ||
+ | |||
+ | Serial.print(" | ||
+ | Serial.print(h); | ||
+ | Serial.print(", | ||
+ | Serial.print(t); | ||
+ | Serial.print(", | ||
+ | Serial.print(ldrValue); | ||
+ | Serial.println(" | ||
+ | } | ||
+ | // set the relay: | ||
+ | digitalWrite(RELAIPIN, | ||
+ | |||
+ | // set the ventilo: | ||
+ | digitalWrite(VENTILOPIN, | ||
+ | } | ||
+ | </ | ||
projets/2019/stagefevrierubo.txt · Dernière modification : 2024/04/16 22:26 de 127.0.0.1