/*
int sensor = 7; // SENSOR na porta digital 7
int ledContagem = 2; // Pisca a cada peça
int ledPistao = 3; // Simula pistão avançando
int ledRetorno = 4; // Simula pistão retornando
int contador = 0; // Variável de contagem
// Controle do sensor
bool estadoAnterior = HIGH;
void setup() {
pinMode(sensor, INPUT_PULLUP);// Entradas
pinMode(ledContagem, OUTPUT); // Saídas
pinMode(ledPistao, OUTPUT);
pinMode(ledRetorno, OUTPUT);
Serial.begin(9600);// Monitor Serial
Serial.println("Sistema iniciado");
Serial.println("Aguardando pecas...");
}
void loop() {
// Lê o sensor
bool estadoSensor = digitalRead(sensor);
// Detecta passagem da peça
if (estadoSensor == LOW && estadoAnterior == HIGH) {
contador++;
Serial.print("Peca detectada: ");
Serial.println(contador);
// Pisca LED da contagem
digitalWrite(ledContagem, HIGH);
delay(200);
digitalWrite(ledContagem, LOW);
delay(300);
}
// Guarda estado anterior
estadoAnterior = estadoSensor;
// Quando chegar em 5 peças
if (contador >= 5) {
Serial.println("CAIXA COMPLETA");
Serial.println("Pistao avancando");
digitalWrite(ledPistao, HIGH);// Pistão avança
delay(3000);
// Pistão retorna
Serial.println("Pistao retornando");
digitalWrite(ledPistao, LOW);
digitalWrite(ledRetorno, HIGH);
delay(2000);
digitalWrite(ledRetorno, LOW);
Serial.println("Linha liberada");
Serial.println("Reiniciando contagem");
contador = 0;// Zera contador
delay(1000);
}
}
*/
#include <Servo.h> // Biblioteca do servo motor
int sensor = 7; // SENSOR na porta digital 7
int ledContagem = 2; // Pisca a cada peça
int ledServoAvanco = 3; // Indica servo avançando
int ledServoRetorno = 4; // Indica servo retornando
int contador = 0; // Variável de contagem
// Controle do sensor
bool estadoAnterior = HIGH;
// Cria objeto servo
Servo servoMotor;
// Posições do servo
int posicaoInicial = 0;
int posicaoServo = 90;
void setup() {
pinMode(sensor, INPUT_PULLUP);
pinMode(ledContagem, OUTPUT);
pinMode(ledServoAvanco, OUTPUT);
pinMode(ledServoRetorno, OUTPUT);
// Servo ligado na porta 9
servoMotor.attach(9);
// Servo inicia na posição inicial
servoMotor.write(posicaoInicial);
Serial.begin(9600);
Serial.println("Sistema iniciado");
Serial.println("Aguardando pecas...");
}
void loop() {
// Lê sensor
bool estadoSensor = digitalRead(sensor);
// Detecta passagem da peça
if (estadoSensor == LOW && estadoAnterior == HIGH) {
contador++;
Serial.print("Peca detectada: ");
Serial.println(contador);
// Pisca LED de contagem
digitalWrite(ledContagem, HIGH);
delay(200);
digitalWrite(ledContagem, LOW);
delay(300);
}
// Salva estado anterior
estadoAnterior = estadoSensor;
// Quando chegar em 5 peças
if (contador >= 5) {
Serial.println("CAIXA COMPLETA");
Serial.println("Servo indo para posicao");
// LED indicando avanço do servo
digitalWrite(ledServoAvanco, HIGH);
// Servo vai para posição
servoMotor.write(posicaoServo);
delay(3000);
Serial.println("Servo retornando");
// Apaga LED avanço
digitalWrite(ledServoAvanco, LOW);
// Liga LED retorno
digitalWrite(ledServoRetorno, HIGH);
// Servo retorna
servoMotor.write(posicaoInicial);
delay(2000);
// Desliga LED retorno
digitalWrite(ledServoRetorno, LOW);
Serial.println("Linha liberada");
Serial.println("Reiniciando contagem");
// Zera contador
contador = 0;
delay(1000);
}
}