Arduino
TM1638
Doble voltímetro 0-15V
xsetaseta@gmail.com
/* xsetaseta@gmail.com Juan Galaz 6/SEP/2017 */ #include <TM1638.h> //data(I/O) pin 8, clock(CLK) pin 9 , strobe(STB) pin 7 TM1638 module(8, 9, 7); #define MULTIPLO 3 #define ENTRADA1 A0 #define ENTRADA2 A1 char cadena[50]; unsigned int vv1,vv2,test3v3; char modo=1; void setup() { //Serial.begin(9600); pinMode(ENTRADA1, INPUT); pinMode(ENTRADA1, INPUT); pinMode(A7, INPUT); //intensidad al minimo module.setupDisplay(1,0); module.setDisplayToString("VOL ",0,0); delay(500); //toma la referencia de 3.3V test3v3=analogRead10(A7); } void loop() { byte keys; long voltios1,voltios2; int z1,z2; vv1=analogRead10(ENTRADA1); delay(150); vv2=analogRead10(ENTRADA2); delay(150); voltios1=vv1*33; voltios1*=MULTIPLO; voltios1*=modo; voltios1/=test3v3; voltios2=vv2*33; voltios2*=MULTIPLO; voltios2*=modo; voltios2/=test3v3; z1=voltios1; z2=voltios2; if(modo==1) { sprintf(cadena,"%03du%03du",z1,z2); } else { sprintf(cadena,"%04d%04d",z1,z2); } module.setDisplayToString(cadena,0,0); module.setDisplayDigit(cadena[1]-48,1,1); module.setDisplayDigit(cadena[5]-48,5,1); // Serial.println(cadena); // sprintf(cadena,"vv1=%05d vv2=%05d test=%05d ",vv1,vv2,test3v3); // Serial.println(cadena); keys = module.getButtons(); if(keys==1) { if(modo==10) { modo=1; module.setLEDs(0); } else { modo=10; module.setLEDs(1); } while( 0 != module.getButtons()); } } //lectura de 10 medidas y hace la media int analogRead10(int entrada) { int z,v; for(z=0,v=0;z<10;z++)v+=analogRead(entrada); v/=10; return(v); } |