Bicicleta generador cargador (8 / 10 paso)

Paso 8: Interfaz de usuario de LCD I2C y menú

Hay muchas formas de código de la interfaz de usuario y menú con un escudo Arduino y pantalla LCD. Nuestro escudo tiene 2 filas de display de 16 caracteres cada una, cuatro botones direccionales, un botón destinado a una función de "seleccionar" y un botón de reset. Para simplificar el proceso de codificación, sólo utiliza los cuatro botones direccionales, había hecho una estructura de bucle if bastante crudo y utiliza las variables de instancia para un montón de cosas. Para los más cómodos con C++, le sugerimos que utilice una estructura de datos (como aquí) o algo más elegante que demasiado-muchos-if-lazos. Queríamos que el usuario a las estadísticas de acceso guardado como el tiempo superior pedalearon en una van, total "distanciado" pedaleando en esta moto y lo vatios-hora total generado desde el primer día. Mientras que el usuario pedalea, queremos la pantalla para mostrar estadísticas como el tiempo desde que usuario inició de pedaleo, velocidad en kilómetros por hora (porque es km una debajo del aparato apreciado en los Estados Unidos), energía generada, vatios-hora generados durante el ciclo. Para los lectores que no han usado una pantalla de LCD I2C antes, aquí es un buen lugar para empezar.

Los cálculos de estas estadísticas no fueron difíciles; para RPM y km/s, dividimos el número de ciclos pedaleó por el tiempo tomó para que el usuario pedalea muchos ciclos y convertir las unidades. Mide el radio de la rueda trasera de nuestra moto y encuentra el radio para que se de 28 cm. Por lo tanto la circunferencia es 175,929 cm, 0.00109317 millas o 0.00175929 kilómetros. Se calculó la distancia bicicleta usando distancia = velocidad * tiempo. Para la energía generada, energía = corriente * voltaje (P = IV). Para obtener un vatios-hora generados, se realizó una suma de Riemann-suma-como al multiplicar la potencia instantánea por el tiempo transcurrido (0,5 segundos) y agregando que cada medio segundo el usuario ha pedaleando.

En cuanto al menú, indexadas de cada pantalla y utiliza un maniquí cuenta variable para navegar a través de las pantallas. Hacia arriba y hacia abajo sería restar o agregar a la variable dummy, mientras la izquierda nos devuelve al menú de información en niveles superior y derecho nos lleva a los submenús.

Aquí es un esquema de nuestro menú

Menú de raíz

> tiempo superior

>> valor

> total distancia recorrida

>> valor

> total de energía generada

>> valor

> Acerca de

>> cualquier información sobre la moto.

el código completo se puede encontrar al final de este Instructable

el código en negrita es lo que añadimos en el código de arriba

incluir el código de biblioteca:

#include < Wire.h >

#include < Adafruit_MCP23017.h >

#include < Adafruit_RGBLCDShield.h >

#include < EEPROM.h > //for almacenamiento de información a largo plazo de Arduinos

Esta porción es tomar palabra por palabra de tutorial de Adafruit, que estamos por encima de

El escudo usa las patillas I2C SCL y SDA. En clásico Arduinos
Esto es análogo de 4 y 5 por lo que no se pueden utilizar para analogRead() ya

Sin embargo, usted puede conectar otros sensores I2C bus I2C y compartir

el bus I2C. Lcd de Adafruit_RGBLCDShield = Adafruit_RGBLCDShield();

Estos #defines hacerlo fácil establecer el color de luz de fondo

#define rojo 0 x 1

#define amarillo 0x3

#define verde 0 x 2

#define verde azulado 0x6

#define azul 0x4

#define violeta 0x5

#define blanco 0x7

Aquí comienza la parte que cifra

int ptr = 0; indicador de menú

int minutos, segundos, kmh;

variables de almacenamiento a largo plazo

int timeAddress = 0;

int distanceAddress = 1;

int powerAddress = 2;

timeValue byte, distanceValue, powerValue;

isHome booleano = true;

void setup() {}

LCD.Begin (16, 2);

LCD.Print ("Hola, mundo!");

lcd.setBacklight(WHITE);

timeValue = EEPROM.read(timeAddress);

distanceValue = EEPROM.read(distanceAddress);

powerValue = EEPROM.read(powerAddress);

root(); exhibición al menú raíz

}

uint8_t i = 0; ponemos esto por el tutorial incluido (no sabe exactamente lo que es para)

void loop() {}

menuFunction(); ver si se presiona el botón

Si (motorV > 1.0 & &! hasBeenOn) {}

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("calentamiento....");

lcd.setCursor(0,1);

LCD.Print ("seguir pedaleando.");

lcd.setBacklight(GREEN);

digitalWrite (cc, HIGH); Presione start en el controlador de carga

lcd.setBacklight(YELLOW);

Delay(3500); Pulsa start durante 3,5 segundos

ciclo = 0;

T0 = millis();

digitalWrite (cc, LOW); deje de pulsar start

ahora se debe cargar la batería

LCD.Clear();

lcd.setCursor(0,0);

hasBeenOn = true;

LCD.Print ("Cargando batería");

lcd.setBacklight(RED);

lcd.setCursor (3, 1);

timeOn = millis();

tiempo de persona cuánto tiempo ha sido pedalear

LCD.Print((Millis()-timeOn)/1000);

Delay(Wait);

isHome = false;

}

else if (motorV > 1.0 & & hasBeenOn) {}

segundos = int((millis()-timeOn)/1000);

minutos = int(secs/60);

segundos = int(secs%60); Esto también se podría escribir como una función separada

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print(mins);

lcd.setCursor (2, 0);

imprimir el número de segundos desde el inicio ciclismo

LCD.Print(":");

lcd.setCursor (3, 0);

LCD.Print(secs);

lcd.setCursor (9, 1);

LCD.Print(RPM);

lcd.setCursor(13,1);

LCD.Print("RPM");

isHome = false;

getCurrent(); Este impresiones W, Wh

getkmh(); Esto imprime km/h

}

Else {}

Si (timeValue > ({millis()-timeOn/1000/60))}

timeValue = int(millis()-timeOn/1000/60);

EEPROM.write (timeAddress, timeValue);

}

{if(!isHome)}

root();

}

}

}

void getkmh() {}

km/h = rpm * 60.0 * revolución;

lcd.setCursor (0, 1);

LCD.Print(kmh);

lcd.setCursor(2,1);

LCD.Print ("km/h");

}

{} void getCurrent()

actual = (float(analogRead(hall))-514.5) / 26.5;

lcd.setCursor (6, 0);

LCD.Print (int (corriente * 13));

lcd.setCursor(8,0);

LCD.Print("W");

WH = Wh + flotador /3600.0*current*13.0 (espera);

lcd.setCursor(10,0);

LCD.Print(WH);

lcd.setCursor(13,0);

LCD.Print("WH");

}

void menuFunction() {}

Delay(200);

botones de uint8_t = lcd.readButtons();

Si {} (botones)

Si (botones & BUTTON_UP) {}

scrollUp(ptr);

}

Si (botones & BUTTON_DOWN) {}

if(PTR >0) {}

scrollDown(ptr);

}

}

Si (botones & BUTTON_LEFT) {}

Si (ptr > = 1 & & ptr < = 4) {}

root();

}

else if (ptr > = 5) {}

Menu();

}

}

Si (botones & BUTTON_RIGHT) {}

scrollRight();

}

}

}

void menu() {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("menú (desplazamiento V)");

lcd.setCursor (0, 1);

LCD.Print ("veces superior");

PTR = 1;

}

{} void root()

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("Bike a cargo!");

lcd.setCursor (0, 1);

LCD.Print ("menú (derecho >)");

PTR = 0;

isHome = true;

}

void scrollRight() {}

Serial.println(PTR);

if(PTR == 0) {}

Menu();

}

otra cosa if(ptr == 1) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print "(tiempo superior del);

lcd.setCursor (0, 1);

LCD.Print(timeValue); RECORDAR EL NÚMERO!!!!!! TIEMPO SUPERIOR

lcd.setCursor(13,1);

LCD.Print("min");

PTR = 5;

}

otra cosa if(ptr == 2) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("distancia Total");

lcd.setCursor (0, 1);

LCD.Print(distanceValue); RECORDAR EL NÚMERO!!!!!! DISTANCIA TOTAL

lcd.setCursor(14,1);

LCD.Print("mi");

PTR = 6;

}

otra cosa if(ptr == 3) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("energía Total");

lcd.setCursor (0, 1);

LCD.Print(powerValue); RECORDAR EL NÚMERO!!!!!! WATTHOURS TOTAL

lcd.setCursor(15,1);

LCD.Print("J");

PTR = 7;

}

otra cosa if(ptr == 4) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("Scroll hacia abajo para");

lcd.setCursor (0, 1);

LCD.Print ("leer más! (V)"); RECORDAR EL NÚMERO!!!!!! WATTHOURS TOTAL

PTR = 8;

}

}

void scrollDown(int i) {}

Serial.println(i);

Si (i == 1) {}

lcd.setCursor (0, 1);

LCD.Print ("distancia Total");

PTR = 2;

}

else if (i == 2) {}

lcd.setCursor (0, 1);

LCD.Print ("energía Total");

PTR = 3;

}

else if (i == 3) {}

lcd.setCursor (0, 1);

LCD.Print ("About!");

PTR = 4;

}

else if (i == 8) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print "(bicicleta de la electrónica del);

lcd.setCursor (0, 1);

LCD.Print ("trabajado en por:");

PTR = 9;

}

else if (i == 9) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print («a. McKay 13");

lcd.setCursor (0, 1);

LCD.Print ("J. Wong 15");

PTR = 10;

}

else if (i == 10) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print("A.Karapetrova'15");

lcd.setCursor (0, 1);

LCD.Print ("S. Walecka 15");

PTR = 11;

}

else if (i == 11) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("S. Li 17");

lcd.setCursor (0, 1);

LCD.Print ("N. Sandford 17");

PTR = 12;

}

else if (i == 12) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("de su Majestad");

lcd.setCursor (0, 1);

LCD.Print ("Dwight Whitaker");

PTR = 13;

}

else if (i == 13) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("Phys 128");

lcd.setCursor (0, 1);

LCD.Print ("Pomona College");

PTR = 14;

}

else if (i == 14) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("pagado por el");

lcd.setCursor (0, 1);

LCD.Print (SIO y Departamento de");

PTR = 15;

}

else if (i == 15) {}

LCD.Clear();

lcd.setCursor (0, 0);

LCD.Print ("física y");

lcd.setCursor (0, 1);

LCD.Print ("Astronomía.");

PTR = 16;

}

}

void scrollUp(int i) {}

Si (i == 2) {}

Menu();

}

Si (i > 2) {}

scrollDown(i-2);

}

}

Artículos Relacionados

Moto + bicicleta + generador transportista, retráctil.

Moto + bicicleta + generador transportista, retráctil.

Aquí puedes encontrar mi proyecto de portadora única moto retráctil con 38 fotos y explicaciones detalladas...Paso 1: Una vieja! Cuando compramos nuestra autocaravana, que ya cuenta con un "portador" en él.Diseño de este portador fue terrible:-D
Bicicleta generador de

Bicicleta generador de

el es mi primer intento en un generador de bicicleta y he hecho muchas mejoras al proyecto. Compruebe hacia fuera mi nuevo BikeGen instructivo para el nuevo generador que recarga 2 pilas AA y alimenta las luces. BikeGen puede utilizarse también para
Bicicleta generador de compactarse partes

Bicicleta generador de compactarse partes

Mi generador de bicicleta está construido en una vieja bicicleta de ejercicio y utiliza una unidad de cadena y el piñón que gira un motor de limpiaparabrisas de parabrisas automotriz. El tren de la impulsión tiene un cociente del engranaje de 1:30, l
Bicicleta generador de Patio muebles hechos de materiales reciclados con el voltaje de sistema de carga de batería regulada

Bicicleta generador de Patio muebles hechos de materiales reciclados con el voltaje de sistema de carga de batería regulada

para este proyecto refinado algunas de las lecciones que he aprendido construyendo (o tratando de construir) generadores de la bici en el pasado en un intento de construir uno que era tranquilo, menos molesto en nuestro espacio vital y capaz de ser u
Bicicleta generador de energía

Bicicleta generador de energía

generación ahora - un proyecto de Festival/Senior HTHCVPregunta esencialCómo puede pedir la campaña de Generation Now® aalcanzar y mantener el liderazgo ambiental y estudianteparticipación en el campus y por lo tanto en nuestrocomunidad en la que som
Bicicleta GPS / cargador HP

Bicicleta GPS / cargador HP

ofrecer herramientas y materiales como los siguientesherramientas:soldadura estaño, corte, aislamiento etc..material:la bicicleta Dinamo, elco de capacitor de 220μF ea 2, 1 ea diodo de 1 amperio, IC 7805 1 ea y cablePaso 1: montar componentes como se
Sistema iluminacion bicicleta-Dimano + cargador bateria

Sistema iluminacion bicicleta-Dimano + cargador bateria

Hola a la comunidad de entusiastas.Esto esto es proyecto para crear un sistema de iluminacion para su bicicleta como de la compañia Revolightspero con cagar la bateria mientras uno anda en de un sistema para ella, solo dejando el uso de la bateria pa
Voltaje regulado [5v] bicicleta Dinamo luz y USB cargador

Voltaje regulado [5v] bicicleta Dinamo luz y USB cargador

aunque hay un montón de instrucciones "Dinamo bicicleta luz" en este sitio, pensé que compartiría las minas.   La gran noticia, hay no hay resistencias en mi circuito.    Tiene un fijo de salida de 5 voltios, por lo que se puede viajar tan rápid
Generador de bicicleta USB

Generador de bicicleta USB

el USB moto generador es un dispositivo de montaje electricidad producir pequeña bici optimizado para proporcionar la energía para dos puertos USB.  Hay tanta pequeña electrónica que puede ser accionado o cargada de una conexión USB sólo se hace desd
Hacer un generador de ultra barato para su bicicleta (por medios baratos de casi suciedad!)

Hacer un generador de ultra barato para su bicicleta (por medios baratos de casi suciedad!)

Hoy me gustaría mostrarle cómo construir un muy barato pero trabajo generador de bicicleta. Mi idea es no competir con una "Dinamo" comprada, pero en cambio enseñándote un divertido proyecto de basura (y algunos de la ciencia detrás de él).Paso
Último 10 Watts USB generador de bicicleta

Último 10 Watts USB generador de bicicleta

Este Instructable es sobre cómo crear un sistema de generador de bicicleta Ultimate 10 Watt USB combina la dinamo y energía solar! Combina mi anterior Instructables para bicicleta Solar/Dinamo USB cargador + cargador USB Solar y luces traseras con un
Generador de viento portátil como un cargador de teléfono celular

Generador de viento portátil como un cargador de teléfono celular

En la India, hay mucha gente que todavía prefiere los trenes para viajar y pasar días juntos para completar su viaje. La mayoría de los trenes no ofrecen electricidad a pesar de que se dispone de tomas de carga. Incluso si lo hacen, se ve que esas in
Cómo construir un generador de bicicleta

Cómo construir un generador de bicicleta

La intención de este proyecto es construir un sencillo generador accionado humano de una bicicleta usada y utilizarlo para lámparas, licuadoras, teléfonos celulares, computadoras portátiles y otros pequeños electrodomésticos. Este proyecto se ayudará
Cargador del teléfono celular (turbina de viento con estructura en batería) la bicicleta

Cargador del teléfono celular (turbina de viento con estructura en batería) la bicicleta

Voy muy a menudo a ciclo en la naturaleza donde hay electricidad, y durante un paseo en bicicleta largo mi telefono descargas generalmente. Estos smartphones tienen una gran capacidad, pero su consumo es muy grande. Hice una hace unas semanas otra tu