Soporte, apoyo para fabricar una bascula que cuente piezas y sirva para pesar
Alguien podría apoyar de antemano le agradezco.
Tienes que definir e inventar mas el problema. ¿como llegan las pezas?, ¿cintas transportadora?, ¿como salen?, ¿como son las piezas?, ¿tuercas o coches?.....
Con lo que espones solo se puede contestar que para el arduino existen para saber el peso las denominadas celulas de carga, algo similar a ESTO, y con muchos margenes de pesaje.
Define mas el problema para poder ser mas preciso en la ayuda..
Saludos.
Tengo este código pero no me funcionan donde se coloco calibrazione ni Menu son librerias que me faltan o no se si porque esta en otro idioma no me funciona
https://create.arduino.cc/projecthub/Fedeasche/arduino-uno-high-precision-counting-scale-3f484b .
Perdón Calibrazione y menú son subrutinas que no agregaron al código.
Y dificil de hacerlas sin ser el programador original, creo que deberias buscar otro codigo .
Saludos.
En el video que agregué marca que colocas 10 piezas y lo divide, hay saca el valor y lo guarda creo que lo guarda en la memoria Emprom. ahora cada vez que agregue más piezas va ir dividiendo
Por ejemplo colocas 10 piezas y pesan 52 gramos al dividir 52/10 es = 5.2.
Ahora si lo que colocas da un peso de 104 gramos te ara la operación 104/5.2 = 20 piezas.
Asi sucesivamente
Se entiende perfectamente pero, al faltar las 2 funciones que nombraste, nada podemos hacer.
Saludos
No entiendo algo, en link hay un video, pero también un código. Dices que el código no esta completo?
Este es el código
#include "HX711.h"
#include"math.h"
#include <EEPROMex.h>
#include <EEPROMVar.h>
#include <LiquidCrystal.h>
#define BUTTON 7
#define LED 13
#define TAREBUTTON 10
#define buzzer 8
// HX711.DOUT - pin #A2
// HX711.PD_SCK - pin #A3
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
HX711 scale(A2, A3); // parameter "gain" is ommited; the default value 128 is used by the library
long somma1=0;
float I=0;
int a;
float b;
float calibval1;
float calibval2;
float media2=0;
float media1=0;
long somma2=0;
float pmax= 900;
int val=0;
int val1=0; //valore del pulsante di tara
float t =0;
float g=0;
void setup() {
scale.set_scale();
scale.tare();
pinMode (buzzer, OUTPUT);
tone(buzzer,440,1000);
delay(500);
noTone(buzzer);
delay(200);
tone (buzzer,330,1000);
delay(1000);
noTone(buzzer);
Serial.begin (9600);
lcd.begin(16, 2);
lcd.print ("Fede Bil");
lcd.setCursor( 0,1);
lcd.print ("ver.1.0 :)");
for (int positionCounter = 0; positionCounter < 6; positionCounter++) {
// scroll one position left:
lcd.scrollDisplayRight();
// wait a bit:
delay(450);}
for (int positionCounter = 0; positionCounter < 6; positionCounter++) {
// scroll one position left:
lcd.scrollDisplayLeft();
// wait a bit:
delay(450);}
delay(3000);
lcd.clear ();
lcd.print ("Press Button 2");
lcd.setCursor(0,1);
lcd.print("to calibrate");
delay(1500);
pinMode(LED, OUTPUT);
pinMode (TAREBUTTON,OUTPUT); //IMPOSTA IL PULSANTE DI TARA
pinMode(BUTTON, INPUT); // imposta il pin digitale come input
val=digitalRead (BUTTON);
if (val==HIGH){
tone(buzzer,1047,1000);
digitalWrite(LED, HIGH);
calibrazione();}
else {
tone(buzzer,660,500);
Serial.println (EEPROM.readFloat(10)); // restituisce il valore float memorizzato all'indirizzo indicato Ricarica calibval1
calibval2= (EEPROM.readFloat(10));
Serial.print ("calibval2=");
Serial.println (calibval2);
scale.set_scale (calibval2);
}}
void loop() {
pippo: I= (scale.get_units(10));
Serial.println(I);
if (I < 1 &&I>0)
{ val1= digitalRead (TAREBUTTON);
if (val1==HIGH){
tone(buzzer,622,1000);
lcd.clear();
lcd.print ("Tara");
delay (1000);
t= scale.get_units(10);
g=round(t);
scale.tare();}
lcd.clear();
lcd.print("d=0,5g");
//lcd.setCursor(9,0);
lcd.setCursor(0,1);
lcd.print("0.00");
lcd.setCursor(9,0);
lcd.print ("d=0.2g");
lcd.setCursor (9,1);
lcd.print(I);
delay(500);
Serial.println ("0.00");
val=digitalRead (BUTTON);
if (val==HIGH){
tone(buzzer,1047,500);
digitalWrite(LED, HIGH);
menu();}
else {
}
goto pippo;
}
val1= digitalRead (TAREBUTTON);
if (val1==HIGH){
tone(buzzer,622,1000);
lcd.clear();
lcd.print ("Tara");
delay (1000);
t =scale.get_units(10);
g=round(t);
scale.tare();
val=digitalRead (BUTTON);
if (val==HIGH){
tone(buzzer,1047,500);
digitalWrite(LED, HIGH);
menu();}
else {
}}
int c= (I*10);
int e = (I*10);
// e=round (c);
int peso_div = (e+1)-((e+1)%2);
int peso_div_5 = (c+2)-((c+2)%5);
float f = (peso_div);
float peso2 = (f/10);
float d = (peso_div_5);
float pesofin=(d/10);
if (pesofin > pmax)
{tone(buzzer,1047,2000);
lcd.clear();
lcd.print ("Overload");
goto pippo;}
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("d=0,5g");
lcd.setCursor(0, 1);
lcd.print (pesofin);
lcd.setCursor(9,0);
lcd.print ("d=0.2g");
lcd.setCursor (9,1);
lcd.print (peso2);
delay(150);
val=digitalRead (BUTTON);
if (val==HIGH){
tone(buzzer,1047,500);
digitalWrite(LED, HIGH);
lcd.clear();
menu();}
else {
}
}
Que es lo que falta?
Faltan las funciones menu() y calibrazione().
La primera la llama desde loop(), la segunda desde setup().
Además, parecería que falta algo justo al final del loop
if (val==HIGH){
tone(buzzer,1047,500);
digitalWrite(LED, HIGH);
lcd.clear();
menu();
}
else { // ???
}
Bueno, dejé un par de msgs en el hilo a ver si el autor responde.
calibrazione() es fácil, porque es la tara de la librería HX711
menu podemos reconstruirlo del video, no les parece?
si son los errores que me marca en calibrazion y menu. me parece genial reconstruir el menu , para calibrar tengo 2 sketch que me compartieron . solo seria reconstruir la parte del menu.
si me podrian ayudar,
porfavor.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.