Pessoal, sou bem ruim com códigos, estava desenvolvendo uma aplicação para um contador em uma fatiadora de frios, agora o codigo deu erro, e não sei o que fiz, estava desenvolvendo e testando de pouco em pouco, mas agora com o erro, perdi o arquivo e nem tenho como testar, alguém pode me dar uma luz? 

 O projeto conta fatias através de um sensor IR, e separa em bandejas com a quantidade selecionada,  também tem um numero alvo de bandejas que desligara a maquina depois de alcançado. Essa parte ja estava funcionando... 

 

#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo servo1;
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);

int quanto = 0; // Quantidade total de embalagens programadas //
int quantm = 0; // Quantidade de embalagens, total //
int quant = 0; // Quantidade programada por embalagem //
int quanp = 0; // Quantidade na embalagem atual //

int a = 0;
int readButtons(int pin);
int sensorState = 0;
int lastSensorState = 0;
const int rele1 = 4;

const int sensorPin = A2;

void atualizarTela() {
lcd.setCursor(0, 0);
lcd.print("F:");
lcd.setCursor(7, 0);
lcd.print("de:");
lcd.setCursor(0, 1);
lcd.print("B:");
lcd.setCursor(7, 1);
lcd.print("de:");
lcd.setCursor(2, 0);
lcd.print(quant);
lcd.setCursor(10,0);
lcd.print(quanp);
lcd.setCursor(10, 1);
lcd.print(quantm);
lcd.setCursor(2, 1);
lcd.print(quanto);
}
void sequenciabandeja() {
servo1.write(180);
delay(500);
servo1.write(0);

}

void setup()
{

pinMode(sensorPin, INPUT);
pinMode(A1, INPUT_PULLUP);
pinMode(rele1, OUTPUT);
int b,c = 0;
lcd.begin(16, 2);
servo1.attach(8);
}

int readButtons(int pin)
{
int b,c = 0;
c=analogRead(pin);
if (c>1000)
{
b=0;
}
else
if (c>300 && c<400)
{
b=1;
}
else
if (c<280 && c>200)
{
b=2;
}
else
if (c>100 && c<200)
{
b=3;
}
else
if (c<30)
{
b=4;
}
else
if (c>480 && c<550)
{
b=5;
}
else
if (c>650 && c<720)
{
b=6;
}
else
return b;
}
void loop()
{

atualizarTela();

digitalWrite(rele1, HIGH);
sensorState = analogRead(sensorPin);

if (sensorState != lastSensorState)
{
if (sensorState > 450)
{
delay(300);
lcd.clear();
quanp++;
quantm++;

}
}
if (quanp == quant)
{
quanp = 0;
sequenciabandeja();
quantm ++;
}

if (quant == quanto)
{
quanp = 0;
quant = 0;
quanto = 0;
digitalWrite(rele1, LOW);
//parar processo????//
sequenciabandeja();
}

a=readButtons(A1);
}
if (a==1) {
lcd.clear();
quant ++;
delay(100);
}
if (a==2) {
lcd.clear();
quant --;
delay(100);
}
if (a==3) {
lcd.clear();
quanto -= 10;
delay(100);
}
if (a==4) {
lcd.clear();
quanto += 10;
delay(100);
}
if (a==5) {
//Botao para iniciar processo????//
}
if (a==6) {
//Botao para, parar processo????//
}

}

Exibições: 963

Responder esta

Respostas a este tópico

boa noite amigo, então parece que você se passou no uso da chave que fecha o loop eis aqui como ficou:

(sempre use a formatação automática da ide para não se perder, e comente mais o final delas para voce sempre lembrar onde ela termina)

#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo servo1;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int quanto = 0; // Quantidade total de embalagens programadas //
int quantm = 0; // Quantidade de embalagens, total //
int quant = 0; // Quantidade programada por embalagem //
int quanp = 0; // Quantidade na embalagem atual //

int a = 0;
int readButtons(int pin);
int sensorState = 0;
int lastSensorState = 0;
const int rele1 = 4;

const int sensorPin = A2;

void atualizarTela() {
  lcd.setCursor(0, 0);
  lcd.print("F:");
  lcd.setCursor(7, 0);
  lcd.print("de:");
  lcd.setCursor(0, 1);
  lcd.print("B:");
  lcd.setCursor(7, 1);
  lcd.print("de:");
  lcd.setCursor(2, 0);
  lcd.print(quant);
  lcd.setCursor(10, 0);
  lcd.print(quanp);
  lcd.setCursor(10, 1);
  lcd.print(quantm);
  lcd.setCursor(2, 1);
  lcd.print(quanto);
}
void sequenciabandeja() {
  servo1.write(180);
  delay(500);
  servo1.write(0);

}

void setup()
{

  pinMode(sensorPin, INPUT);
  pinMode(A1, INPUT_PULLUP);
  pinMode(rele1, OUTPUT);
  int b, c = 0;
  lcd.begin(16, 2);
  servo1.attach(8);
}

int readButtons(int pin)
{
  int b, c = 0;
  c = analogRead(pin);
  if (c > 1000)
  {
    b = 0;
  }
  else if (c > 300 && c < 400)
  {
    b = 1;
  }
  else if (c < 280 && c > 200)
  {
    b = 2;
  }
  else if (c > 100 && c < 200)
  {
    b = 3;
  }
  else if (c < 30)
  {
    b = 4;
  }
  else if (c > 480 && c < 550)
  {
    b = 5;
  }
  else if (c > 650 && c < 720)
  {
    b = 6;
  }
  else
    return b;
}
void loop()
{

  atualizarTela();

  digitalWrite(rele1, HIGH);
  sensorState = analogRead(sensorPin);

  if (sensorState != lastSensorState)
  {
    if (sensorState > 450)
    {
      delay(300);
      lcd.clear();
      quanp++;
      quantm++;

    }
  }
  if (quanp == quant)
  {
    quanp = 0;
    sequenciabandeja();
    quantm ++;
  }

  if (quant == quanto)
  {
    quanp = 0;
    quant = 0;
    quanto = 0;
    digitalWrite(rele1, LOW);
    //parar processo????//
    sequenciabandeja();
  }

  a = readButtons(A1);

  if (a == 1) {
    lcd.clear();
    quant ++;
    delay(100);
  }
  if (a == 2) {
    lcd.clear();
    quant --;
    delay(100);
  }
  if (a == 3) {
    lcd.clear();
    quanto -= 10;
    delay(100);
  }
  if (a == 4) {
    lcd.clear();
    quanto += 10;
    delay(100);
  }
  if (a == 5) {
   // Botao para iniciar processo ?? ?? //
  }
  if (a == 6) {
   // Botao para, parar processo ?? ?? //
  }
}//final void loop

bom trabalho, espero ter ajudado!

Muito obrigado Romario, resolveu! :D 
 Eu sou bem novo nesse campo de programação, (comecei a1 mês) revisei as chaves mas não tinha achado quem estava sobrando ou faltando, qual é essa formatação automática da IDE que vc falou?
 Eu faço meus códigos atualmente copiando e colando parte de outros códigos, nao sei exatamente como a linguagem funciona.... 

 Aproveitando o embalo, mais 2 ajudas se possivel:

 Tem uma parte do código que ainda não sei como fazer; seria para desligar a maquina caso a peça de embutido acabasse, a lógica seria, que se ficasse sem contar (interromper o IR) por um período de tempo, digamos 10 segundos, o Rele1 seria desligado..
 digitalWrite(rele1, LOW);
Acho que seria com uma função while, mas não imagino como....

 Segunda ajuda, me aconselha algum curso, tutorial, e-book que ache bom e instrutivo para aprender o básico do C ? 
 Comecei a assistir alguns no youtube mas não me identifiquei... 

Obrigado des de já!   

Boa tarde amigo, bom nao sei se vai dar certo pq não olhei direito mais ta ai uma boa oportunidade para testar:

#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo servo1;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int quanto = 0; // Quantidade total de embalagens programadas //
int quantm = 0; // Quantidade de embalagens, total //
int quant = 0; // Quantidade programada por embalagem //
int quanp = 0; // Quantidade na embalagem atual //
int lastquanp =0;

int a = 0;
int readButtons(int pin);
int sensorState = 0;
int lastSensorState = 0;
const int rele1 = 4;

unsigned long previousMillis = 0;

const int sensorPin = A2;

void atualizarTela() {
  lcd.setCursor(0, 0);
  lcd.print("F:");
  lcd.setCursor(7, 0);
  lcd.print("de:");
  lcd.setCursor(0, 1);
  lcd.print("B:");
  lcd.setCursor(7, 1);
  lcd.print("de:");
  lcd.setCursor(2, 0);
  lcd.print(quant);
  lcd.setCursor(10, 0);
  lcd.print(quanp);
  lcd.setCursor(10, 1);
  lcd.print(quantm);
  lcd.setCursor(2, 1);
  lcd.print(quanto);
}
void sequenciabandeja() {
  servo1.write(180);
  delay(500);
  servo1.write(0);

}
void Stop_Time(int t) {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= t) {//dez segundos
    digitalWrite(rele1, LOW);
    previousMillis = currentMillis;
    
  }



}
void setup()
{

  pinMode(sensorPin, INPUT);
  pinMode(A1, INPUT_PULLUP);
  pinMode(rele1, OUTPUT);
  int b, c = 0;
  lcd.begin(16, 2);
  servo1.attach(8);
}

int readButtons(int pin)
{
  int b, c = 0;
  c = analogRead(pin);
  if (c > 1000)
  {
    b = 0;
  }
  else if (c > 300 && c < 400)
  {
    b = 1;
  }
  else if (c < 280 && c > 200)
  {
    b = 2;
  }
  else if (c > 100 && c < 200)
  {
    b = 3;
  }
  else if (c < 30)
  {
    b = 4;
  }
  else if (c > 480 && c < 550)
  {
    b = 5;
  }
  else if (c > 650 && c < 720)
  {
    b = 6;
  }
  else
    return b;
}
void loop()
{

  atualizarTela();

  digitalWrite(rele1, HIGH);
  sensorState = analogRead(sensorPin);





  if (sensorState != lastSensorState)//quando o sensor parar nao entra aki
  {
    if (sensorState > 450)
    {
      delay(300);
      lcd.clear();
      quanp++;
      quantm++;

    } else if (quanp != lastquanp)//caso o sensor nao tenha nada entao ele verifica se a contagem esta diferente da anterior
    {
      Stop_Time(10000);//conta 10 segundos ate parar
   }
  }//sensorState != lastSensorState
  //#####################################################


  if (quanp == quant)
  {
    quanp = 0;
    sequenciabandeja();
    quantm ++;
  }

  if (quant == quanto)
  {
    quanp = 0;
    quant = 0;
    quanto = 0;
    digitalWrite(rele1, LOW);
    //parar processo????//
    sequenciabandeja();
  }

  a = readButtons(A1);

  if (a == 1) {
    lcd.clear();
    quant ++;
    delay(100);
  }
  if (a == 2) {
    lcd.clear();
    quant --;
    delay(100);
  }
  if (a == 3) {
    lcd.clear();
    quanto -= 10;
    delay(100);
  }
  if (a == 4) {
    lcd.clear();
    quanto += 10;
    delay(100);
  }
  if (a == 5) {
    // Botao para iniciar processo ?? ?? //
  }
  if (a == 6) {
    // Botao para, parar processo ?? ?? //
  }
}//final void loop

quanto a duvida do canal eu recomendo o "eXcript" como geralmente eles falam mais compassadamente eu uso a velocidade de reprodução 2x mais você pode começar com 1.5x vai ter um ganho de tempo absurdo, lembrando que você aprende em C para computador porem se você aplicar o conhecimento disso mais as regras de formatação (muito útil quando se usa varias condições ) ao Arduino será bem mais fácil de programar sambem pode usar a opção de "Autoformatação" da ide arduino Ctrl+t, ela serve para indentar o código deixando mais legível mais você só vai perceber essa "visão" quando ver as aulas da 06 ha 07 para ter uma noção, espero ter ajudado!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço