Escala exacta de la cerveza (2 / 2 paso)

Paso 2: Codificación de todo

Código Arduino fue bastante simple. Aquí está el código. Sólo subir a Arduino, efectúe todas las conexiones, y estás listo para ir. Aquí es mi escala completa. Una vez más, el empaquetado apesta, pero quería llegar ya está en marcha. Trabajaré en un paquete mejor. Si usted viene para arriba con algo, me avisas. Después de haber encendido el sistema, se almacena el valor de la variable "fullKeg" y cada peso entonces se resta continuamente dándole los valores de Tara, peso de vidrio, peso de la cerveza y el peso de la izquierda de la cerveza junto con el percenatge del barril en el monitor serial. Estoy trabajando en el código de VB.Net. Para restablecer el sistema después de un nuevo barril ha sido ya sea potencia instalada el sistema abajo o presione el botón reset. Aquí está el código de Arduino:

int dataInPin = 5;
goPin INT = 12;
int tarePin = 8;
volátil int bandera = 0;
int quickDelay = 100;
int smallDelay = 500;
int bigDelay = 1000;
int checkVal;
int tareVal;
int glassVal;
int beerVal;
largo fullKeg;
Float kegWeight;
Float percentLeft;

void setup()
{
fullKeg = 2070;  barril completo = 2070 (peso) onzas aprox.
kegWeight = fullKeg;
percentLeft = 100;
pinMode (tarePin, entrada);
pinMode (goPin, salida);
digitalWrite (goPin, LOW);
Serial.Begin(9600);
analogReference(EXTERNAL);
attachInterrupt (0, Inicio, cambio);
}

void loop()
{
Si (digitalRead(tarePin) == HIGH)
Si (bandera == 7)
{
digitalWrite (goPin, LOW);
tareVal = 0;
tareVal = Tare();
Bandera = 1;
digitalWrite (goPin, HIGH);
Delay(bigDelay);
}
mientras (bandera == 1)
{
digitalWrite (goPin, LOW);
Delay(quickDelay);
digitalWrite (goPin, HIGH);
Delay(quickDelay);
digitalWrite (goPin, LOW);
Delay(quickDelay);
digitalWrite (goPin, HIGH);
Delay(quickDelay);
checkVal = 0;
checkVal = Tare();
Si (checkVal > (tareVal 5))
{
Delay(smallDelay);
glassVal = 0;
digitalWrite (goPin, LOW);
glassVal = Glass(tareVal);
Bandera = 2;
digitalWrite (goPin, HIGH);
Delay(smallDelay);
digitalWrite (goPin, LOW);
Delay(smallDelay);
digitalWrite (goPin, HIGH);
Delay(smallDelay);
}
}
mientras (bandera == 2)
{
digitalWrite (goPin, LOW);
Delay(quickDelay);
digitalWrite (goPin, HIGH);
Delay(quickDelay);
digitalWrite (goPin, LOW);
Delay(quickDelay);
digitalWrite (goPin, HIGH);
Delay(quickDelay);
digitalWrite (goPin, LOW);
Delay(quickDelay);
digitalWrite (goPin, HIGH);
Delay(quickDelay);
checkVal = 0;
checkVal = Tare();
Si (checkVal > (glassVal tareVal 5))
{
Delay(smallDelay);
beerVal = 0;
digitalWrite (goPin, LOW);
beerVal = cerveza (glassVal, tareVal);
Bandera = 0;
kegWeight = kegWeight - (beerVal / 10.65);
percentLeft = ((kegWeight / fullKeg) * 100);
Serial.Print(beerVal / 10.65);
Serial.Print("\r");
Serial.Print(kegWeight);
Serial.Print("\r");
Serial.Print(percentLeft);
Serial.Print("\r");
digitalWrite (goPin, HIGH);
Delay(smallDelay);
digitalWrite (goPin, LOW);
Delay(smallDelay);
digitalWrite (goPin, HIGH);
Delay(smallDelay);
digitalWrite (goPin, LOW);
Delay(smallDelay);
digitalWrite (goPin, HIGH);
Delay(smallDelay);
digitalWrite (goPin, LOW);
}
}
}

StartUp() vacío
{
Bandera = 7;
}

int Tare()
{
largo Total = 0;
para (int i = 0; i < 100; i)
{
Total = Total analogRead(dataInPin);
Delay(10);
}
Total = (Total / 100);
retorno Total;
}

int (int NewTare) de vidrio
{
GlassWeight largo = 0;
para (int i = 0; i < 100; i)
{
GlassWeight = GlassWeight analogRead(dataInPin);
Delay(10);
}
GlassWeight = ((GlassWeight / 100)-NewTare);
volver GlassWeight;
}

int cerveza (int NewGlass, int NewTare2)
{
BeerWeight largo = 0;
para (int i = 0; i < 100; i)
{
BeerWeight = BeerWeight analogRead(dataInPin);
Delay(10);
}
BeerWeight = ((BeerWeight / 100)-(NewGlass NewTare2));
volver BeerWeight;
}

Copiar y pegar en el IDE de Adrduino. El código asume que se utiliza un 1/2 barril, 2070 onzas. Si es un barril de 1/4, cambie el valor de "fullKeg" a 1035.

*Edit* (10/11/13) el código ahora utiliza uno de las interrupciones (ver las conexiones de cables) para reiniciar y empezar a leer en caso de un error. Me di cuenta que a veces la escala se salte un paso y leer nada. Esto ayuda con eso. Además, he cambiado el código de LED que parpadean rápidamente el número de veces iguales al paso en. Un abrir y cerrar no me dicen si sólo había Tarar la báscula o leer el peso del vidrio. Oh, y ahora tengo una aplicación de Windows!

Artículos Relacionados

ChalKaat (realidad aumentada basado en láser de corte)

ChalKaat (realidad aumentada basado en láser de corte)

Hoy en día CNC/cortadoras tienen una indirecta interfaz con equipos externos. Para explicar esto permíteme darte un ejemplo, permite imaginar que desea cortar una pulsera de cuero para el brazo. Hacer esto con las cortadoras láser actuales tienes pri
Hacer un corte del círculo plantilla

Hacer un corte del círculo plantilla

Hola, este es el diseño que hice para hacer el círculo mediante el uso de routers. Es fácil de hacer. Esta herramienta se utiliza para cortar un gran círculo fuera de la madera.Paso 1: Lo necesita preparado1. panel madera contrachapada o de madera (e
Raygun retro: realizando un apoyo a través de CAD

Raygun retro: realizando un apoyo a través de CAD

Es enteramente posible y a menudo apropiado, realizar un apoyo a través de la talla de la mano de diversos materiales, para el producto terminado o como un maestro para moldeo y fundición.También es posible hacer partes importantes de la formación co
Molde de silcone para bastidor colgante de inversión

Molde de silcone para bastidor colgante de inversión

¡ Hola!Trabajo con Jim Kibler en su taller. Juntos hemos estado haciendo moldes de silicona para los bastidores para los rifles de estilo antiguo decorativos. Más recientemente, he estado usando moldes de silicona para hacer colgantes de collar de pl
Medida 3D impreso bicicleta fibra de carbono

Medida 3D impreso bicicleta fibra de carbono

si eres realmente en ciclismo y en este sitio, lo más probable es que en los años has por lo menos jugó con la idea de hacer tu propio marco. Hay algo realmente especial y profundamente gratificante sobre montar algo que has construido tú mismo, y po
Montajes de choque para las sillas Eames de fibra de vidrio

Montajes de choque para las sillas Eames de fibra de vidrio

Este proyecto surgió después de que recogí unas sillas de fibra de vidrio de Eames que necesitan nuevos soportes. Los montajes de choque en estas sillas son a menudo roto y aplastados después de 30 años de uso, o el pegamento ha fracasado y ha caído.
Arte de pared de mapa mundo

Arte de pared de mapa mundo

Mi trabajo me ha llevado a muchos lugar alrededor del mundo. Admirar, respetar y disfrutar realmente de las diferencias culturales de todas las personas y lugares. Añadir que de hecho siempre he tenido una cosa para mapas y necesitábamos algún arte d
Nadador de aire nano

Nadador de aire nano

con aire nadadores pululando en la escena de gadget y como un homenaje a los nadadores de aire original, quería ver lo fácil que es construir uno yo mismo.Nadadores de aire vienen baratos, pero son bastante grandes en comparación con estándares de di
¿Cómo varía el campo magnético con la distancia?

¿Cómo varía el campo magnético con la distancia?

Este Instructabler es una investigación científica para determinar cómo el campo magnético varía con la distancia. Dos métodos son conclusiones presentadas y razonables.El imán es un tipo de disco fino, no una barra de imán.Herramientas y equipos:Un
Sencillo probador de transistores

Sencillo probador de transistores

Hola y Bienvenidos a un proyecto electrónico simples principiantes. Hoy voy a mostrarte cómo hacer un probador de transistor que se utiliza para determinar si un transistor es NPN o un PNP. Si es un NPN el circuito debe encenderse para arriba. Esto t
Cabeza de Lego de botella propano

Cabeza de Lego de botella propano

un día me di cuenta de que la humilde botella de gas propano o GLP es prácticamente una versión a gran escala exacta de una cabeza de Lego mini figura. Así que decidí animar mi botella de barbacoa con un poco Lego Lovin '.Paso 1: Pintar la botella de
Determinar cómo el campo magnético varía con la distancia

Determinar cómo el campo magnético varía con la distancia

Este Instructabler describe cómo hacer una investigación científica para determinar cómo el campo magnético varía con la distancia. Dos métodos son conclusiones presentadas y razonables.Tenga en cuenta que el imán utilizado en este Instructable es un
Cómo aislar bacterias degradantes plástico del suelo.

Cómo aislar bacterias degradantes plástico del suelo.

Con toda la publicidad acerca de cómo los plásticos se van acumulando en los rellenos sanitarios y el océano ha sido una suposición de que los plásticos son incapaces de romper. Durante mi licenciatura como una Microbiología principal en Cal Poly SLO
Vuelta a tus papas a la francesa en una papa

Vuelta a tus papas a la francesa en una papa

¿Papas a la francesa son excelentes, pero cada ahora y después no gustaría que tener una patata crujiente, limpiarla en vez de caldoso, grasientas patatas fritas? Se podría pensar que las transformaciones químicas involucradas en profunda freír patat