คือ ผมใช้ Input แรงดัน 0-5 V (Sine wave) ต่อที่ขา A0 แล้วก็ใช้โค้ดด้านล่างนี้เพื่อทำการ Sampling 300 ค่าต่อหนึ่งคาบ (ไฟบ้าน 50 Hz หรือ 20 ms) แล้วผมต้องการ 2 คาบเลยให้ค่า A = 600 แต่โค้ดด้านล่างพอเก็บค่าครบ 600 ครั้งแล้วพอมาทำการแสดงทำไมถึงแสดงกราฟออกมาประมาณ 3 ลูกคลื่นครึ่งหรอครับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้#define A 600
int B=0,D=0;
int C[A];
void setup()
{
Serial.begin(9600);
noInterrupts();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 1066;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS10);
TIMSK1 |= (1 << OCIE1A);
interrupts();
}
ISR(TIMER1_COMPA_vect)
{
if(B<A)
{
C=analogRead(A0);
B++;
}
}
void loop()
{
if(B==A)
{
for(D=0;D<A;D++)
Serial.println(C[D]*5.0/1023.0);
B++;
}
}
โค้ดผมผิดพลาดตรงไหนหรอครับ? หรือผมเข้าใจอะไรผิดไปหรอครับ?
Arduino Sampling ทำไมกราฟถึงเกินครับ?
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
โค้ดผมผิดพลาดตรงไหนหรอครับ? หรือผมเข้าใจอะไรผิดไปหรอครับ?