Saudações.

Tenho um programa que lê dois potenciometro e um sensor de pressão.

Ja uso esse programa a mais de 2 anos funcionando perfeitamente, e agora troquei o arduino, e le  só le os potenciometros de 0 a 255 sendo que antes ele lia 0 a 1023(o que é o normal).

Ja troquei tudo e continua o problema, alguem poderia me dar uma resposta?

Obrigado


#include <Wire.h> //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE); //ENDEREÇO DO I2C E DEMAIS INFORMAÇÕES


const int pinoPressao = A1; //PINO ANALÓGICO UTILIZADO PELO SENSOR DE PRESSAO
const int pinoLigar = A2; //PINO ANALÓGICO UTILIZADO PARA LIGAR A BOMBA
const int pinoDesligar = A3; //PINO ANALÓGICO UTILIZADO PARA DESLIGAR A BOMBA
const int acionamento = 3; //PINO DIGITAL UTILIZADO PELO RELE PARA LIGAR/DESLIGAR BOMBA

byte valorDaPressao = 0; //VARIÁVEL QUE ARMAZENA O VALOR DA PRESSAO
byte valorParaLigar = 0; //VARIÁVEL QUE ARMAZENA O VALOR PARA LIGAR A BOMBA
byte valorParaDesligar = 0; //VARIÁVEL QUE ARMAZENA O VALOR PARA DESLIGAR A BOMBA


void setup(){

Serial.begin(9600);


pinMode(pinoPressao, INPUT); //DEFINE O PINO COMO ENTRADA
pinMode(pinoLigar, INPUT); //DEFINE O PINO COMO ENTRADA
pinMode(pinoDesligar, INPUT); //DEFINE O PINO COMO ENTRADA
pinMode(acionamento, OUTPUT); //DEFINE O PINO COMO SAÍDA
digitalWrite(acionamento,HIGH); //pull down

lcd.begin (16,2); //SETA A QUANTIDADE DE COLUNAS(16) E O NÚMERO DE LINHAS(2) DO DISPLAY

}

void loop(){

valorDaPressao = (analogRead(pinoPressao));
valorParaLigar = (analogRead(pinoLigar));
valorParaDesligar =(analogRead(pinoDesligar));

if (valorDaPressao < valorParaLigar) {
digitalWrite (acionamento,LOW);
}
delay(5);

if (valorDaPressao > valorParaDesligar) {
digitalWrite (acionamento,HIGH);
}
delay(5);


}

Exibições: 337

Anexos

Responder esta

Respostas a este tópico

Ola.

  O byte acumula 8 bits. Deve ser isso.

Em 

byte valorDaPressao

valorDaPressao pode receber numeros de 0 a 255.

mude para 

int valorDaPressao

idem para todas as variaveis que estao tipo byte.

ref:

https://www.arduino.cc/reference/pt/language/variables/data-types/b...

Obrigado,

O que acho engraçado que ele fincionava assim mesmo .

Bom dia, 

https://www.arduino.cc/reference/pt/language/functions/analog-io/an...

analogRead()

Descrição

Lê o valor de um pino analógico especificado. A placa Arduino possui um conversor analógico-digital 10 bts de 6 canais (8 canais nos Mini e Nano, 16 no Mega, 7 canais em placas MKR). Isso significa que este irá mapear tensões entre 0 e a tensão operacional (5V or 3.3V) para valores inteiros entre 0 e 1023. No Arduino UNO, por exemplo, isso permite uma resolução entre leituras de: 5 volts / 1024 unidades, ou .0049 volts (4.9 mV) por unidade. Veja a tabela abaixo para os pinos utilizáveis, tensão de operação e resolução máxima para algumas placas Arduino.

Em placas baseadas em microcontroladores AVR (UNO, Nano, Mini, Mega), ler um valor analógico leva em torno de 100 microssegundos (0.0001 s), então a taxa de leitura máxima é aproximadamente 10,000 leituras por segundo.

Vlw, entendi o qie aconteceu, quem usa esse sistema é um primo meu e na troca de arduino ele achou melhor fazer umas mudanças, não sei porque.

Obrigado 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço