code สร้าง โวลต์มิเตอร์ ลอง sim ใน proteus แล้วใช้ได้แต่ตอนต่อของจริงไม่ออกเป็นตัวเลขทั้งสองหลัก ออกแต่หลักหลัง
ช่วยดูให้ทีว่าผิดตรงไหน ควรแก้ตรงไหนบ้าง ใช้ atmega168 arduino 32u4
#include <Arduino.h>
int digit1,digit10;
float Vol,X;
char ledpin[]={7,8,9,10,11,12,13,5,6,22};
char seg_num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Display(int num);
void setup()
{
Serial.begin(9600);
for(int i=0;i<9;i++){
pinMode(ledpin,OUTPUT);
Serial.println("ledpin");
}
pinMode(22,OUTPUT);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
}
void loop(){
X=analogRead(22);
Serial.println(X);
Vol=X/205.01;
digit1=(int)Vol;
Serial.println(digit1);
digit10=(int)(Vol*10);
Serial.println(digit10);
for(int i=0;i<10;i++){
for(int x=7;x<=13;x++)
digitalWrite(x, HIGH);
Display(digit1);
digitalWrite(5, LOW);
delay(50);
digitalWrite(5, HIGH);
for(int x=7;x<=13;x++)
digitalWrite(x, HIGH);
Display(digit10);
digitalWrite(6, LOW);
delay(50);
digitalWrite(6, HIGH);
}
}
void Display(int num){
char dis=seg_num[num];
for(int j=0;j<8;j++){
if((dis>>j)&1){
digitalWrite(j+7,LOW);
Serial.println((seg_num[num]<<j)&1);
}else{
digitalWrite(j+7,HIGH);
Serial.println((seg_num[num]<<j)&1);
}
delay(50);
}
}
ขอความกรุณาเรื่อง volt meter
ช่วยดูให้ทีว่าผิดตรงไหน ควรแก้ตรงไหนบ้าง ใช้ atmega168 arduino 32u4
#include <Arduino.h>
int digit1,digit10;
float Vol,X;
char ledpin[]={7,8,9,10,11,12,13,5,6,22};
char seg_num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Display(int num);
void setup()
{
Serial.begin(9600);
for(int i=0;i<9;i++){
pinMode(ledpin,OUTPUT);
Serial.println("ledpin");
}
pinMode(22,OUTPUT);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
}
void loop(){
X=analogRead(22);
Serial.println(X);
Vol=X/205.01;
digit1=(int)Vol;
Serial.println(digit1);
digit10=(int)(Vol*10);
Serial.println(digit10);
for(int i=0;i<10;i++){
for(int x=7;x<=13;x++)
digitalWrite(x, HIGH);
Display(digit1);
digitalWrite(5, LOW);
delay(50);
digitalWrite(5, HIGH);
for(int x=7;x<=13;x++)
digitalWrite(x, HIGH);
Display(digit10);
digitalWrite(6, LOW);
delay(50);
digitalWrite(6, HIGH);
}
}
void Display(int num){
char dis=seg_num[num];
for(int j=0;j<8;j++){
if((dis>>j)&1){
digitalWrite(j+7,LOW);
Serial.println((seg_num[num]<<j)&1);
}else{
digitalWrite(j+7,HIGH);
Serial.println((seg_num[num]<<j)&1);
}
delay(50);
}
}