0% acharam este documento útil (0 voto)
99 visualizações4 páginas

Progama Arduino Senai

Enviado por

parreira631
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
99 visualizações4 páginas

Progama Arduino Senai

Enviado por

parreira631
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

// #define L298

const int B1motor = 5; // Pino 5 no B1 do L293

const int B2motor = 3; // Pino 3 no B2 do L293

// Pinos dos Sensores

const int reedSwitches[] = {8, 7, 6, 4}; // Pinos dos Reed Switches

const int botoes[] = {12, 11, 10, 9}; // Pinos dos Botões

//Estado Lógico

int estadosBotoes[] = {0, 0, 0, 0};

int vSpeed = 255; // VelMotor

byte botaoAndar = 4; // AndarBase

unsigned long delayTempo;

void setup() {

// Define os pinos do Drive como saída de sinal

pinMode(B1motor, OUTPUT);

pinMode(B2motor, OUTPUT);

// Define os pinos dos Reed Switches como entrada de sinal

for (int i = 0; i < 4; i++) {

pinMode(reedSwitches[i], INPUT);

}
// Define os pinos dos Botões como entrada de sinal em pull-up

for (int i = 0; i < 4; i++) {

pinMode(botoes[i], INPUT_PULLUP);

Serial.begin(9600);

void loop() {

if (botaoAndar == 4) {

// Verifica os botões e atualiza andar

for (int i = 0; i < 4; i++) {

estadosBotoes[i] = digitalRead(botoes[i]);

if (estadosBotoes[i] == HIGH) {

botaoAndar = i;

delayTempo = millis();

break;

if (obterAndar() != 4) {

parar();

if (obterAndar() == 4) {

descer();

}
} else {

if (obterAndar() != 4) {

if (botaoAndar > obterAndar()) {

while (botaoAndar != obterAndar()) {

subir();

} else if (botaoAndar < obterAndar()) {

while (botaoAndar != obterAndar()) {

descer();

} else {

parar();

botaoAndar = 4;

delay(100);

// Verifica os sensores Reed Switch e indica em que andar está o elevador

byte obterAndar() {

for (int i = 0; i < 4; i++) {

if (digitalRead(reedSwitches[i]) == LOW) {

return i;

return 4; // Retorna 4 se não estiver em nenhum andar

}
// Comandos de inicio do motor

void descer() {

analogWrite(B1motor, vSpeed);

analogWrite(B2motor, 0);

void subir() {

analogWrite(B1motor, 0);

analogWrite(B2motor, vSpeed);

void parar() {

analogWrite(B1motor, 0);

analogWrite(B2motor, 0);

Você também pode gostar