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);
Tags:
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.
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,
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por