COMO CONVERTER PORTAS ANALÓGICAS EM PORTAS DIGITAIS

Boa tarde pessoal !!! 

Estou com uma dúvida já esgotei as portas digitais do meu UNO, porém preciso de mais 3 portas digitais, sei que posso utilizar as portas analógicas  A0, A1 ...... como digitais só não sei como isso teria que ficar no código.

Segue o trecho do código , se alguém puder ajudar. VALEU.

#include <SPI.h>
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>

//DETERMINA O END MAC
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip[] = {
192, 168, 0, 20};
//PORTA DE COMUNICAÇÃO
EthernetServer server(80);
//ESCREVE O NUMERO DOS PINOS CORRESPONDENTES AOS LEDES
int ledPin8 = 9;
int ledPin7 = 8;
int ledPin6 = 7;
int ledPin5 = 6;
int ledPin1 = 5;
int ledPin2 = 4;
int ledPin3 = 3;
int ledPin4 = 2;

//ESCREVE O NUMERO DOS PINOS CORRESPONDENTES AOS SENSORES
const int sensorchama = A5;//*ESSE TERIA QUE SER DITAL* Numero do pino do Sensor de chama
const int buzzer = A4; //*ESSE TERIA QUE SER DITAL* Número do pino do buzzer
const int gas = A3; //*ESSE TERIA QUE SER DITAL* Número do pino do sensor de gás DIGITAL
const int gass = A2; //*ESSE JÁ É ANALOGICO* Número do pino do sensor de gás ANALOGICO
int nivel_sensor = 250;

// Variaveis
int SensorState = 0; // Variável de leitura do status do sensor


String readString = String(30);


boolean LEDON1 = false;
boolean LEDON2 = false;
boolean LEDON3 = false;
boolean LEDON4 = false;
boolean LEDON5 = false;
boolean LEDON6 = false;
boolean LEDON7 = false;
boolean LEDON8 = false;


void setup(){
Serial.begin(9600);
Ethernet.begin(mac, ip);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);

pinMode(buzzer, OUTPUT); // *COMO FICARIA AQUI*
pinMode(sensorchama, INPUT);// *COMO FICARIA AQUI*
pinMode(gas, INPUT);// *COMO FICARIA AQUI*
pinMode(gass, INPUT);

}

void loop(){
EthernetClient client = server.available();
SensorState = digitalRead(buzzer);

// Verifica se o sensor detectou chamas
if (SensorState == HIGH) {
// Liga o Led
digitalWrite(buzzer, HIGH);
} else {
// Desliga o Led
digitalWrite(buzzer, LOW);
}
// Le os dados do pino digital D0 do sensor
int valor_digital = digitalRead(gas);
// Le os dados do pino analogico A0 do sensor
int valor_analogico = analogRead(gass);
// Mostra os dados no serial monitor
Serial.print("Pino D0 : ");
Serial.print(valor_digital);
Serial.print(" Pino A0 : ");
Serial.println(valor_analogico);
// Verifica o nivel de gas/fumaca detectado
if (valor_analogico > nivel_sensor)
{
// Liga o buzzer


digitalWrite(buzzer, HIGH);

}
else
{
// Desliga o buzzer

digitalWrite(buzzer, LOW);
}
delay(100);

Exibições: 5549

Responder esta

Respostas a este tópico

Apenas use o pinMode(A0, OUTPUT) e digitalWrite(A0, HIGH).

A unica coisa que não funciona para as portas digitais é o pinMode(A0, INPUT_PULLUP), que você tem q implementar como

pinMode(A0, INPUT);

digitalWrite(A0, HIGH);

Assim vc forçou ela ao PULL_UP

Olá

Apenas continue o ciclo para ganhar mais portas digitais, ultimo porta digital é a 13 então a partir do A0 continue contando.

Ex: A0 = 14

      A1 = 15...

Seguindo seu código se fosse para continuar 

int ledPin9 = 14; 
int ledPin10 = 15;

Abs.

Marcelo Mosczynski,

  Cara, valeu pela dica com a conversão pull_up de porta analogica,  parece simples, mas eu não tinha pensado.

   É como dizem:  "Tudo é simples...  depois de que você sabe como fazer".

Blz

Não precisa digitar a letra maiúscula A na frente ?

Por exemplo, se digitar pinMode(A5, OUTPUT); ,

poderia digitar ?

 pinMode(19, OUTPUT);

digitalWrite(19, HIGH);

A0 = 14

A1 = 15

A2 = 16

A3 = 17

A4 = 18

A5 = 19 

nunca tentei isso

mas vc pode tentar, 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço