Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Reloj del medidor de panel analógico Arduino

Componentes y suministros

Arduino Nano R3
× 1
Maxim Integrated DS3231M - ± 5ppm, I2C Real-Time Clock
× 1
1mA ampmeter
× 3
resistencia de 5kOhm
× 3
Resistencia de 10k ohmios
× 2
Interruptor de botón SparkFun de 12 mm
× 2

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Construí este bonito reloj de madera de estilo analógico con un Arduino Nano y amperímetros de 1 mA. Tengo una idea de aquí. Para mostrar los segundos, se ha agregado una parte del código. También se agrega una parte que, cuando se ejecuta, pasa por toda la escala desde cero hasta el máximo. valor para propósitos de calibración. Dependiendo de los amperímetros que usemos, el valor de las resistencias de 5k puede ser diferente. Debido a que todos los medidores son ligeramente diferentes, los valores de PWM deben ajustarse según su diseño. Tendrá que cambiar algunos valores porque está configurado para funcionar específicamente con mis medidores.

Código

  • código
código Arduino
 / * Medidor de panel analógico - SÓLO reloj Modo Instructables Enlace:http://www.instructables.com/id/Analog-VU-meter-and-Clock-Arduino-Powered/ Credits:bildr - DS1307 Código RTC http://bildr.org/2011/03/ds1307-arduino/ _____________________ El cableado es el siguiente:- Cable rojo USB (5v) a VCC - Cable negro USB a GND - Botones - Izquierda / Abajo a Digital 2 (siga el tutorial de arduino:http ://arduino.cc/en/uploads/Tutorial/button.png) - Derecha / Hasta digital 3 - DS1307 RTC - SDA a analógico 4 - SCL a analógico 5 - Medidor analógico izquierdo a digital 5 (PWM) - Analógico derecho Medidor a digital 6 (PWM) _- Segundos Medidor analógico a digital 9_ (PWM) _____________________ Nota:Debido a que todos los medidores son ligeramente diferentes, los valores de PWM deben ajustarse según su diseño. Siéntase libre de usar mi código, pero tendrá que cambiar algunos valores porque está configurado para funcionar específicamente con mis medidores. * / # incluye "Wire.h" #define DS1307_ADDRESS 0x68byte zero =0x00; // solución para el problema # 527int downButton =2; // pulsador abajo para ajustar el tiempo (pin 2) int upButton =3; // pulsador hacia arriba para ajustar el tiempo (pin 3) int horas =0; int minutos =0; int segundos =0; int lastMinute =0; int lastSecond =0; int leftMeter =5; // El medidor izquierdo (horas) está conectado al pin 5int rightMeter =6; // el medidor derecho (min) está conectado al pin 6int secMeter =9; // El medidor de segundos (seg) está conectado al pin 9void setup () {Wire.begin (); Serial.begin (9600); // ver la hora en el monitor serial pinMode (leftMeter, OUTPUT); // Inicializar salidas y entradas pinMode (rightMeter, OUTPUT); pinMode (secMeter, SALIDA); digitalWrite (leftMeter, HIGH); // Probar medidores en el inicio digitalWrite (rightMeter, HIGH); digitalWrite (secMeter, HIGH); escritura digital (13, ALTA); retraso (1000); digitalWrite (leftMeter, LOW); digitalWrite (rightMeter, LOW); digitalWrite (secMeter, LOW); digitalWrite (13, BAJO); retraso (1000);} bucle vacío () {fecha de impresión (); retraso (75); // Cambiando el tiempo con los botones if (digitalRead (downButton) ==HIGH) {byte segundo =segundos; // No se confunda:segundo no es lo mismo que segundos byte minuto =minutos; // No se confunda:minuto no es lo mismo que minutos byte hora =horas; // No se confunda:hora no es lo mismo que horas si (minutos> 0) {--minuto; } más {minuto =59; if (horas> 0) {- hora; } else {hora =23;}} Wire.beginTransmission (DS1307_ADDRESS); Wire.write (cero); // detiene Oscillator Wire.write (decToBcd (segundo)); Wire.write (decToBcd (minuto)); Wire.write (decToBcd (hora)); Wire.write (cero); // iniciar Wire.endTransmission ();} if (digitalRead (upButton) ==HIGH) {segundo byte =0; byte minuto =minutos; // No se confunda:minuto no es lo mismo que minutos byte hora =horas; // No se confunda:la hora no es lo mismo que las horas si (minutos <59) {++ minuto; } más {minuto =0; if (horas <23) {++ hora; } más {hora =0;}} Wire.beginTransmission (DS1307_ADDRESS); Wire.write (cero); // detiene Oscillator Wire.write (decToBcd (segundo)); Wire.write (decToBcd (minuto)); Wire.write (decToBcd (hora)); Wire.write (cero); // iniciar Wire.endTransmission ();}} byte decToBcd (byte val) {// Convertir números decimales normales a decimal codificado en binario return ((val / 10 * 16) + (val% 10));} byte bcdToDec (byte val) {// Convertir decimal codificado en binario a números decimales normales return ((val / 16 * 10) + (val% 16));} void printDate () {// Restablecer el puntero de registro Wire.beginTransmission (DS1307_ADDRESS); Wire.write (cero); Wire.endTransmission (); Wire.requestFrom (DS1307_ADDRESS, 7); segundos =bcdToDec (Wire.read ()); minutos =bcdToDec (Wire.read ()); horas =bcdToDec (Wire.read () &0b111111); // 24 horas // imprime la fecha Serial.print (horas); // Descomentar para ver la hora en el monitor serial Serial.print (":"); // Serial.println (minutos); // No olvide eliminar el comentario de 'Serial.begin' en 'void setup' arriba // Niveles de medidor específicos para cada hora // Probablemente tendrá que ajustar estos valores.// Juegue con los valores hasta que obtenga Lo que quieras. if (lastMinute! =minutes) {if (horas ==1 || horas ==13) {analogWrite (leftMeter, 0); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==2 || horas ==14) {analogWrite (leftMeter, 29); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==3 || horas ==15) {analogWrite (leftMeter, 52); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==4 || horas ==16) {analogWrite (leftMeter, 75); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==5 || horas ==17) {analogWrite (leftMeter, 98); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==6 || horas ==18) {analogWrite (leftMeter, 130); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==7 || horas ==19) {analogWrite (leftMeter, 152); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==8 || horas ==20) {analogWrite (leftMeter, 172); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==9 || horas ==21) {analogWrite (leftMeter, 192); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==10 || horas ==22) {analogWrite (leftMeter, 213); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==11 || horas ==23) {analogWrite (leftMeter, 234); // ajustar el nivel del medidor izquierdo (hora)} if (horas ==0 || horas ==12) {analogWrite (leftMeter, 255); // ajusta el nivel del medidor izquierdo (hora)} if (minutos * 4.75 <255) {// aumenta el valor de PWM en 4.75 cada minuto analogWrite (rightMeter, minutos * 4.75); // Tuve que usar 4.75 en mi medidor para obtener 30 minutos para apuntar exactamente hacia arriba} else {// perfecto sería 4.25 porque 4.25 * 60 =255 analogWrite (rightMeter, 255); } lastMinute =minutos; if (segundos * 4.25 <255) {analogWrite (secMeter, segundos * 4.25); } else {analogWrite (secMeter, 255); } lastSecond =segundos; }} 

Esquemas


Proceso de manufactura

  1. Reloj de visión pov de Arduino
  2. Reloj de palabras simple (Arduino)
  3. Reloj Arduino con tiempos de oración islámicos
  4. Reloj maestro
  5. Flores - Arduino Nano, CrazyCircuits, DFRobot
  6. Reloj POV LED de estilo analógico
  7. Rueda de pestaña de ajuste analógico FlightGear
  8. Arduino Nano:Controla 2 motores paso a paso con joystick
  9. Los medidores de panel simplifican el diseño
  10. Opciones de paneles digitales y analógicos
  11. ¿Qué es un medidor de panel?