Bug ? in Digital out on i/o board ??
Hi,
When I initialize all digital ports as input AND I power up externally I only read HIGH on all 8 digital inputs. When I power up via usb and afterwards add external power this does not happen.
If I use one digital i/o as output all works as expected.
Code with unexpected behaviour:
#include <Wire.h>
#include <EEPROM.h>
#include <UC1701.h>
#include <Indio.h>
static UC1701 lcd;
void setup() {
// put your setup code here, to run once:
Indio.digitalMode(1,INPUT); // Set CH1 as an input
Indio.digitalMode(2,INPUT); // Set CH2 as an input
Indio.digitalMode(3,INPUT); // Set CH3 as an input
Indio.digitalMode(4,INPUT); // Set CH4 as an input
Indio.digitalMode(5,INPUT); // Set CH5 as an input
Indio.digitalMode(6,INPUT); // Set CH6 as an input
Indio.digitalMode(7,INPUT); // Set CH7 as an input
Indio.digitalMode(8,INPUT); // Set CH8 as an input
for (int y = 0; y <= 7; y++) {
for (int x = 0; x <= 128; x++) {
lcd.setCursor(x, y);
lcd.print(" ");
}
}
}
void loop() {
// lcd.clear(); //clear the screen
lcd.setCursor(0, 2);
lcd.print("Digital1: ");
Indio.digitalWrite(8,LOW);
lcd.print(Indio.digitalRead(1),BIN);
lcd.print(Indio.digitalRead(2),BIN);
lcd.print(Indio.digitalRead(3),BIN);
lcd.print(Indio.digitalRead(4),BIN);
lcd.print(Indio.digitalRead(5),BIN);
lcd.print(Indio.digitalRead(6),BIN);
lcd.print(Indio.digitalRead(7),BIN);
lcd.print(Indio.digitalRead(8),BIN);
}
Code modified with one OUTPUT works fine:
#include <Wire.h>
#include <EEPROM.h>
#include <UC1701.h>
#include <Indio.h>
static UC1701 lcd;
void setup() {
// put your setup code here, to run once:
Indio.digitalMode(1,INPUT); // Set CH1 as an input
Indio.digitalMode(2,INPUT); // Set CH2 as an input
Indio.digitalMode(3,INPUT); // Set CH3 as an input
Indio.digitalMode(4,INPUT); // Set CH4 as an input
Indio.digitalMode(5,INPUT); // Set CH5 as an input
Indio.digitalMode(6,INPUT); // Set CH6 as an input
Indio.digitalMode(7,INPUT); // Set CH7 as an input
// Set CH8 as an input
Indio.digitalMode(8,OUTPUT);
Indio.digitalWrite(8,LOW); // To work around a bug showing all digital input's as 1, only when externally powered
lcd.begin(); //sets the resolution of the LCD screen
for (int y = 0; y <= 7; y++) {
for (int x = 0; x <= 128; x++) {
lcd.setCursor(x, y);
lcd.print(" ");
}
}
}
void loop() {
// lcd.clear(); //clear the screen
lcd.setCursor(0, 2);
lcd.print("Digital1: ");
Indio.digitalWrite(8,LOW);
lcd.print(Indio.digitalRead(1),BIN);
lcd.print(Indio.digitalRead(2),BIN);
lcd.print(Indio.digitalRead(3),BIN);
lcd.print(Indio.digitalRead(4),BIN);
lcd.print(Indio.digitalRead(5),BIN);
lcd.print(Indio.digitalRead(6),BIN);
lcd.print(Indio.digitalRead(7),BIN);
}
Hi Peter,
Could you please first set all 8 channels to outputs and to LOW in the setup routine before setting your chosen channels to inputs? That should solve the issue. I will add this small routine as standard to a library update soon.
Cheers,
Loic
Your answer
Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!
Keep Informed
About This Forum
This community is for professionals and enthusiasts of our products and services.
Read GuidelinesQuestion tools
Stats
Asked: 10/7/15, 1:51 PM |
Seen: 2704 times |
Last updated: 10/8/15, 9:13 AM |
Thanx, this works..