Boa noite! porque no tinkercad funciona e no arduino nao

no tinkercad funciona mas cuando eu trasfiro pro arduino uno
ele fica mudando de função sozinho fica

#include <LiquidCrystal.h>

#define bot 2
#define bot2 3
#define frente 4
#define tras 5
#define led 7 // era pra teste nao to usando mas

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

float x =0.000;
float memoria =0;
float memoria1 =0;
int cont =0;

void setup(){

lcd.begin(16,2);
pinMode (bot,INPUT_PULLUP);
pinMode (bot2,INPUT_PULLUP);
pinMode (frente,INPUT_PULLUP);
pinMode (tras,INPUT_PULLUP);
pinMode (led,OUTPUT);
lcd.setCursor(4,0);
lcd.print (“bom dia!”);
delay(1000);
lcd.clear();

}
void loop(){

if(!digitalRead(frente)){
cont++;
delay(300);
lcd.setCursor(0,0);
lcd.print(cont);

}
if(cont==5){cont=0;}

if(!digitalRead(tras)){
cont–;
delay(300);
lcd.setCursor(0,0);
lcd.print(cont);

}
if(cont==5){cont=1;}

if(cont==1){
lcd.setCursor(3,0);
lcd.print (“progamacao”);
delay(2000);
lcd.clear();
}
else if(cont==2){

lcd.setCursor(5,0);
lcd.print (“corte 1”);

if (!digitalRead(bot2)){
x=x+0000.01;
memoria=x;
lcd.setCursor(5,0);
lcd.print (“corte 1”);
lcd.setCursor(5,1);
lcd.print (memoria);
delay(100);
}

if (!digitalRead(bot)){
x=x-000.01;
memoria=x;
lcd.setCursor(5,0);
lcd.print (“corte 1”);
lcd.setCursor(5,1);
lcd.print(memoria);
delay(100);
}
}
else if(cont==3){
lcd.setCursor(5,0);
lcd.print (“corte 2”);

if (!digitalRead(bot2)){
x=x+0000.01;
memoria1=x;
lcd.setCursor(5,0);
lcd.print (“corte 2”);
lcd.setCursor(5,1);
lcd.print (memoria1);
delay(100);
}

if (!digitalRead(bot)){
x=x-000.01;
memoria1=x;
lcd.setCursor(5,0);
lcd.print (“corte 2”);
lcd.setCursor(5,1);
lcd.print(memoria1);
delay(100);
}
}
else if(cont==4){
lcd.setCursor(3,0);
lcd.print (“balanca”);
delay(2000);
lcd.clear();
}
}

Como vai Nilton?
Infelizmente não consegui acessar seu projeto no Tinkercad. Você precisa torná-lo público primeiro.

Peço também que explique melhor o que acontece na prática, não ficou claro.

o Gabriel blz ?

ve ce agora ta certo de acessar

o programa no tinkercad blz. so que no arduino ele fica assim.
c eu faço o botão so somando ele funciona normal
mas cuando eu coloco o botão pra diminuir , ele fica diminuindo sem parar, ate desconectei o fio dos botão pensando que era alguma interferençia mas não é
E c eu inverto coloco pra diminuir primeiro tepois pro somar ele fica somando ser para

vou mandar o que eu estou fazendo no arduino, que no tinkercad eu so uso como teste pra depois eu passa pro arduino

É aquela balança que tinha comentado com voce alguns mes atras.
do conseguindo fazer aus pouco, passa um pouco de raiva mas ta indo

// balança de pesagem com corte automatico
// Nilton prado

#include “HX711.h”
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define DOUT A0 // HX711 DATA OUT = pino A0 do Arduino
#define CLK A1 // HX711 SCK IN = pino A1 do Arduino
#define rele1 12 // rele do primeiro corte
#define rele2 11 // rele do segundo corte
#define bot 4 // botão muda pra pra baixo
#define bot2 3 // botão muda pra cima
#define frente 5 // botão muda pra frente
#define tras 2 // botão muda pra Atras
#define tara 8 // botão da tara
#define bot3 6 // botão que inicia a pesagem
#define endereco 0x27 // Endereços comuns: 0x27, 0x3F
#define colunas 16
#define linhas 2

// INSTANCIANDO OBJETOS
LiquidCrystal_I2C lcd(endereco, colunas, linhas);

HX711 balanca; // define instancia balança HX711

double calibration_factor = 99670.00; // fator de calibração aferido na Calibraçao
float peso = 0;
float memoria=0;
float memoria1=0;
float x=0;
float x1=0;
int cont =0;

void setup(){

lcd.init(); // INICIA A COMUNICAÇÃO COM O DISPLAY
lcd.backlight(); // LIGA A ILUMINAÇÃO DO DISPLAY

lcd.print("- Ola,Nilton -");
delay(2000); // DELAY DE 5 SEGUNDOS
lcd.clear(); // LIMPA O DISPLAY
lcd.begin(16,2);
balanca.begin(DOUT, CLK); // inicializa a balança
balanca.set_scale(calibration_factor); // ajusta fator de calibração
balanca.tare(); // zera a Balança
pinMode (rele1,OUTPUT);
pinMode (rele2,OUTPUT);
pinMode (bot,INPUT_PULLUP);
pinMode (tara,INPUT_PULLUP);
pinMode (bot3,INPUT_PULLUP);
pinMode (frente,INPUT_PULLUP);
pinMode (bot2,INPUT_PULLUP);
}

void loop(){

if(!digitalRead(frente)){
cont++;
delay(150);
lcd.setCursor(0,0);
lcd.print(cont);

if(cont==4){cont=0;}

}
if(cont==0){ // balança

lcd.setCursor(5,0);
lcd.print("Peso: “); // imprime no lcd
lcd.setCursor(4,1);
lcd.print(balanca.get_units(), 3); // imprime peso na balança com 3 casas decimais
peso = balanca.get_units();
lcd.print(” kg "); // imprime no monitor lcd
delay(150) ; // atraso de 0,5 segundos

if(!digitalRead(tara)){                       // se pressionar o botao

  balanca.tare();                             // zera a balança
  lcd.setCursor(0,0);
  lcd.print(" Balanca zerada ");              // imprime no monitor serial
  delay(1500);
  lcd.clear();
  
}
if (!digitalRead(bot3 ) ){       
digitalWrite (rele1,HIGH);
digitalWrite (rele2,HIGH);


}

if (peso >= memoria){
digitalWrite(rele1,LOW);
}
if (peso >= memoria1){
digitalWrite(rele2,LOW);

}
}

else if(cont==1){ // inicio da progamaçao

lcd.setCursor(3,0);
lcd.print (“progamacao”);
delay(1500);
lcd.clear();
if(!digitalRead(frente)){lcd.clear();}
}

else if(cont==2){ // primeiro corte

lcd.setCursor(5,0);      

lcd.print (“corte 1”);

if (!digitalRead(bot2)){
x=x+0000.01;
memoria=x;
lcd.setCursor(5,0);
lcd.print (“corte 1”);
lcd.setCursor(5,1);
lcd.print (memoria);
delay(100);
while (!digitalRead(bot2)){}
}

if (!digitalRead(bot)){
x=x-000.01;
memoria=x;
lcd.setCursor(5,0);
lcd.print (“corte 1”);
lcd.setCursor(5,1);
lcd.print(memoria);
delay(100);
while (!digitalRead(bot)){}
}
if(!digitalRead(frente)){lcd.clear();}
}
else if(cont==3){ // segundo corte

lcd.setCursor(5,0);      

lcd.print (“corte 2”);

if (!digitalRead(bot2)){
x1=x1+0000.01;
memoria1=x1;
lcd.setCursor(5,0);
lcd.print (“corte 2”);
lcd.setCursor(5,1);
lcd.print (memoria1);
delay(100);
while (!digitalRead(bot2)){}
}

if (!digitalRead(bot)){
x1=x1-000.01;
memoria1=x1;
lcd.setCursor(5,0);
lcd.print (“corte 2”);
lcd.setCursor(5,1);
lcd.print(memoria1);
delay(100);
while (!digitalRead(bot2)){}

}
 if(!digitalRead(frente)){lcd.clear();}     

}

}

Infelizmente ainda não consegui acessar o seu circuito no Tinkercad, Nilton.

Pelo que pude ver, aparentemente está tudo ok.
Já tentou fazer com resistores de pull-down ou pull-up externos, só por precaução? Aparentemente a lógica está OK.

bom dia Gabriel
consegui resolver o problema. tava tom focado no loop que não tinha reparado que eu defini o nome do pino. mas esqueci de colocar ele no void setup

muito obrigado bela atenção

e pra ece ano que vem ja pensou de fazer umas aulas mais avançada em grupo ou particular

1 curtida

Que bom que deu certo!

Seria interessante umas aulas. Estava querendo começar com umas lives no Youtube, pra ver o tamanho do público que conseguimos engajar.

opa o dia que vc for fazer nos avisa!!!

vc tem alguma aula explicando como usar memoria EEPRON

Infelizmente não tenho. Mas é uma boa ideia de aula, como utilizar memória EEPROM do Arduíno. Vou anotar na minha lista de ideias de aulas!

1 curtida