• Categories
    • Recent
    • Tags
    • Popular
    • Register
    • Login

    ESP8266 - analogRead(A0) return 65535

    Scheduled Pinned Locked Moved MyControllerDevice (ESP8266)
    esp8266analogread
    12 Posts 3 Posters 7.4k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jkandasaJ Offline
      jkandasa @Stephan35
      last edited by

      @Stephan35 I have answered in github issue. https://github.com/mycontroller-org/MyControllerDevice/issues/8

      Stephan35S 1 Reply Last reply Reply Quote 0
      • Stephan35S Offline
        Stephan35 @jkandasa
        last edited by

        @jkandasa
        In fact i don't really know where i have to post ... what is your suggest about it ?
        Thanks

        jkandasaJ 1 Reply Last reply Reply Quote 0
        • jkandasaJ Offline
          jkandasa @Stephan35
          last edited by

          @Stephan35 If you see any issues and do you think it is bug? Please raise it on GitHub. If you queries please raise it here.

          1 Reply Last reply Reply Quote 0
          • Stephan35S Offline
            Stephan35
            last edited by

            @jkandasa
            In fact To be fair, for now I am not able to judge if this is a bug or not, so I will not post anymore on github. 😆

            1 Reply Last reply Reply Quote 0
            • N Offline
              njbuch
              last edited by

              Can you show your exact working example?

              Stephan35S 1 Reply Last reply Reply Quote 0
              • Stephan35S Offline
                Stephan35 @njbuch
                last edited by

                @njbuch said:

                Can you show your exact working example?

                Here is my full example :

                #include <MyController.h>
                
                MyController mc;
                
                
                
                
                #define SENSOR_LED_BLEU "LED BLEU"
                #define SENSOR_LED_ROUGE "LED ROUGE"
                #define SENSOR_LED_VERTE "LED VERTE"
                #define SENSOR_LUXMETRE "LUXMETRE"
                #define BP_GPIO4 "Bouton RESET"
                #define BP_GPIO5 "Bouton Test 1"
                #define BP_GPIO14 "Bouton Test 2"
                
                //Relay pins
                #define PIN_RELAY_1 2
                #define PIN_BP_GPIO4 4
                #define PIN_BP_GPIO5 5
                #define PIN_LED_VERTE 12
                #define PIN_LED_BLEU 13
                #define PIN_BP_GPIO14 14
                #define PIN_LED_ROUGE 15
                
                
                
                //Sensors
                #define SENSOR_RELAY_1 "relay-1"
                
                
                
                
                unsigned long lastRecu = 0;
                bool Gpio5_Checked = false;
                bool Gpio14_Checked = false;
                unsigned long Gpio5_millis = 0;
                unsigned long Gpio14_millis = 0;
                
                unsigned long Scan_Gpio = 0;
                int Gpio4_S = 0; // Gpio 4 state
                int Gpio5_S = 0; // Gpio 5 state
                int Gpio14_S = 0; // Gpio 14 state
                int Gpio4_LS = 0; // Gpio 4 Last state
                int Gpio5_LS = 0; // Gpio 5 Last state
                int Gpio14_LS = 0; // Gpio 14 Last state
                
                
                //in_esp/ESP_8C0125/LUXMETRE/C_SET/V_LIGHT_LEVEL/0
                //n_esp/ESP_8C0125/LUXMETRE/C_SET/V_LEVEL/0
                
                //out_esp/ESP_8C0125/SENSOR_BC/C_INTERNAL/LUXMETRE/0
                //_message.update(BC_SENSOR, C_INTERNAL, SENSOR_LUXMETRE);
                
                
                void sendLUX(){
                  McMessage _message;
                  //_message.update(SENSOR_LUXMETRE, C_SET, "V_LIGHT_LEVEL");
                  //char _luxmeter[21];
                 // snprintf_P(_luxmeter, 20, "%s", analogRead(A0) );
                  Serial.print("Envoie de Luxmeter:");
                  Serial.println(analogRead(A0));
                  //snprintf_P(_luxmeter, 20, "%d", String(analogRead(A0)));
                  ////send(_message.set(_luxmeter));
                  _message.update(SENSOR_LUXMETRE, C_SET, V_LEVEL);
                  //snprintf_P(_luxmeter, 20, "%d", analogRead(A0));
                  send(_message.set(analogRead(A0)));
                }
                
                //in_esp/ESP_8C0125/Bouton Test/C_SET/V_TRIPPED/0
                /*
                void sendPin5(){
                  McMessage _message;
                  _message.update(BP_GPIO5, C_SET, V_TRIPPED);
                  if (digitalRead(PIN_BP_GPIO5) == HIGH){
                  	send(_message.set(1));
                  	Serial.println("BP = 1");
                  }
                  if (digitalRead(PIN_BP_GPIO5) == LOW){
                  	send(_message.set(0));
                  	Serial.println("BP = 0");
                  }
                }
                void sendPin14(){
                  McMessage _message;
                  _message.update(BP_GPIO14, C_SET, V_TRIPPED);
                  if (digitalRead(PIN_BP_GPIO14) == HIGH){
                  	send(_message.set(1));
                  	Serial.println("BP2 = 1");
                  }
                  if (digitalRead(PIN_BP_GPIO14) == LOW){
                  	send(_message.set(0));
                  	Serial.println("BP2 = 0");
                  }
                }
                */
                
                void sendPin4(int val){
                  	McMessage _message;
                  	_message.update(BP_GPIO4, C_SET, V_STATUS);
                  	send(_message.set(val));
                  	Serial.print("Changement de Pin4 : ");
                  	Serial.println(val);
                }
                
                void sendPin5(int val){
                  	McMessage _message;
                  	_message.update(BP_GPIO5, C_SET, V_STATUS);
                  	send(_message.set(val));
                  	Serial.print("Changement de Pin5 : ");
                  	Serial.println(val);
                }
                void sendPin14(int val){
                  	McMessage _message;
                  	_message.update(BP_GPIO14, C_SET, V_STATUS);
                  	send(_message.set(val));
                  	Serial.print("Changement de Pin14 : ");
                  	Serial.println(val);
                }
                
                /*
                void Pin5Change(){
                	if (millis() - Gpio5_millis > 75){
                    	delayMicroseconds(32000);
                    	Serial.println("\n*** Pin5 Interrupt");
                    	Gpio5_Checked = true;
                    	Gpio5_millis = millis();
                    	detachInterrupt(PIN_BP_GPIO5);
                    }
                }
                void Pin14Change(){
                	if (millis() - Gpio14_millis > 75){
                	    delayMicroseconds(32000);
                	    Serial.println("\n*** Pin14 Interrupt");
                	    Gpio14_Checked = true;
                	    Gpio14_millis = millis();
                	    detachInterrupt(PIN_BP_GPIO14);
                	}
                }
                */
                
                
                
                void before(){
                  //Your code before this library inialize
                }
                
                void presentation(){
                  //Send node name and version information
                  sendSketchInfo("Module de test", "1.0.0");
                
                  //Send sensor name and type
                  present(S_BINARY, SENSOR_RELAY_1, "Relay 01");
                  //request current status
                  request(SENSOR_RELAY_1, V_STATUS);
                
                
                  present(S_BINARY, SENSOR_LED_BLEU, SENSOR_LED_BLEU);
                  //request current status
                  request(SENSOR_LED_BLEU, V_STATUS);
                
                  present(S_BINARY, SENSOR_LED_ROUGE, SENSOR_LED_ROUGE);
                  //request current status
                  request(SENSOR_LED_ROUGE, V_STATUS);
                
                  present(S_BINARY, SENSOR_LED_VERTE, SENSOR_LED_VERTE);
                  //request current status
                  request(SENSOR_LED_VERTE, V_STATUS);
                
                  //present(S_LIGHT, SENSOR_LUXMETRE, SENSOR_LUXMETRE);
                  //request(SENSOR_LUXMETRE, "V_LIGHT_LEVEL");
                
                
                  present(S_DIMMER, BP_GPIO4, BP_GPIO4);
                  request(BP_GPIO4, V_STATUS);
                
                  present(S_DOOR, BP_GPIO5, BP_GPIO5);
                  request(BP_GPIO5, V_STATUS);
                
                  present(S_DOOR, BP_GPIO14, BP_GPIO14);
                  request(BP_GPIO14, V_STATUS);
                
                }
                
                void receiveTime(unsigned long mcTimestamp){
                  //Do something with received time
                }
                
                void receive(McMessage &message) {
                	if(message.isSensorOf(SENSOR_RELAY_1) && message.isSubTypeOf(V_STATUS)){
                	    digitalWrite(PIN_RELAY_1, message.getUInt());
                	}
                	if(message.isSensorOf(SENSOR_LED_BLEU) && message.isSubTypeOf(V_STATUS)){
                	    digitalWrite(PIN_LED_BLEU, message.getUInt());
                	}
                	if(message.isSensorOf(SENSOR_LED_ROUGE) && message.isSubTypeOf(V_STATUS)){
                	    digitalWrite(PIN_LED_ROUGE, message.getUInt());
                	}
                	if(message.isSensorOf(SENSOR_LED_VERTE) && message.isSubTypeOf(V_STATUS)){
                	    digitalWrite(PIN_LED_VERTE, message.getUInt());
                	}
                }
                
                
                void setup() {
                    pinMode(A0, INPUT);
                  	pinMode(PIN_BP_GPIO4, INPUT);
                  	pinMode(PIN_BP_GPIO5, INPUT);
                  	pinMode(PIN_BP_GPIO14, INPUT);
                  	pinMode(PIN_RELAY_1, OUTPUT);
                  	pinMode(PIN_LED_BLEU, OUTPUT);
                  	pinMode(PIN_LED_ROUGE, OUTPUT);
                  	pinMode(PIN_LED_VERTE, OUTPUT);
                  	if(!isSystemConfigured()){
                    //You can check, does this node/device configured. If no you can display/blink some led from here.
                  	}
                  //attachInterrupt(PIN_BP_GPIO5, (Pin5Change), CHANGE);
                  //attachInterrupt(PIN_BP_GPIO14, (Pin14Change), CHANGE); //digitalPinToInterrupt(x)
                }
                
                void loop() {
                	mc.loop();
                	long now = millis();
                	if (now - Scan_Gpio > 200 ){
                		Gpio4_S = digitalRead(PIN_BP_GPIO4);
                		Gpio5_S = digitalRead(PIN_BP_GPIO5);
                		Gpio14_S = digitalRead(PIN_BP_GPIO14);
                		if (Gpio4_S != Gpio4_LS ){
                			sendPin4(((Gpio4_S == HIGH) ? 1 : 0));
                			Gpio4_LS = Gpio4_S;
                		}
                		if (Gpio5_S != Gpio5_LS ){
                			sendPin5(((Gpio5_S == HIGH) ? 1 : 0));
                			Gpio5_LS = Gpio5_S;
                		}
                		if (Gpio14_S != Gpio14_LS ){
                			sendPin14(((Gpio14_S == HIGH) ? 1 : 0));
                			Gpio14_LS = Gpio14_S;
                		}
                		Scan_Gpio = now;
                		Serial.print(".");
                
                	}
                  
                  /*
                  if (Gpio5_Checked) {
                  	Gpio5_Checked = false;
                  	sendPin5();
                  	yield();
                  	attachInterrupt(PIN_BP_GPIO5, (Pin5Change), CHANGE);
                  }
                  if (Gpio14_Checked) {
                  	Gpio14_Checked = false;
                  	sendPin14();
                  	yield();
                  	attachInterrupt(PIN_BP_GPIO14, (Pin14Change), CHANGE);
                  }
                  */
                  //You can add your logic here.
                  	if (now - lastRecu > 30000 ) {
                    	lastRecu = now;
                    	//sendRSSI();
                    	sendLUX();
                    	//send(SENSOR_LUXMETRE, analogRead(A0));
                  	}
                }
                
                

                Take care of this : need to be improve , i am a beginer with MyController , and this example is not clean !

                Hope will help you

                Best regards.

                1 Reply Last reply Reply Quote 0
                • N Offline
                  njbuch
                  last edited by njbuch

                  Thanks will try out a variant of this! 🙂

                  @Stephan35 I dont see any presentation of the SENSOR_LUXMETRE it seems to have been removed from your code, why is that?

                  Do you have a light-color sensor? And what is the exact sensor-type? Do you have a link?

                  1 Reply Last reply Reply Quote 0
                  • N Offline
                    njbuch
                    last edited by

                    I have tried, and I am now realizing that the ADC on ESP8266 has a smaller voltage span at 0.0 - 1.0V.

                    I will need to adjust my voltage divider and retry, I am guessing thats why the reading keeps very high, because it never goes below 1.0V. Let us know what happens in your lab....

                    Stephan35S 1 Reply Last reply Reply Quote 0
                    • Stephan35S Offline
                      Stephan35 @njbuch
                      last edited by

                      @njbuch
                      You have to adjust electonic input with a input divide voltage :
                      0_1489325656696_photo_bb.gif.png

                      You will find full of example to explain how to.

                      A i tried to explain, my example need to be improve , tested, and modified as need.

                      Best regards.

                      N 1 Reply Last reply Reply Quote 0
                      • N Offline
                        njbuch @Stephan35
                        last edited by

                        @Stephan35 Indeed but my voltage divider used was aiming for 0.0 - 3.3 and resulting output was over 1 volt most of the time, which means that I am reading 65535 all the time. I need a new one.

                        I am looking in my bins after a few resistors that matches my photo-resistor specs. Will revert when successfull. I am using: http://www.ohmslawcalculator.com/voltage-divider-calculator to find the right combination.

                        Stephan35S 1 Reply Last reply Reply Quote 0
                        • Stephan35S Offline
                          Stephan35 @njbuch
                          last edited by

                          @njbuch said:

                          @Stephan35 Indeed but my voltage divider used was aiming for 0.0 - 3.3 and resulting output was over 1 volt most of the time, which means that I am reading 65535 all the time. I need a new one.

                          I am looking in my bins after a few resistors that matches my photo-resistor specs. Will revert when successfull. I am using: http://www.ohmslawcalculator.com/voltage-divider-calculator to find the right combination.

                          Sorry,
                          answer is there : analogRead(A0) return 65535

                          You have to modify Myconfig.h

                          #define ENABLE_READ_VCC
                          
                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          0

                          Online

                          592

                          Users

                          529

                          Topics

                          3.4k

                          Posts
                          Copyright © 2015-2025 MyController.org | Contributors | Localization