เป็นรูปแบบ Operator ในภาษา C ครับ
A = A * B; สามารถ เขียนแบบ A *= B; ได้ครับ
A = A * B; สามารถ เขียนแบบ A *= B; ได้ครับ
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu
#include <EEPROM.h>
void EEPROMWriteInt(int p_address, int p_value)
{ byte lowByte = ((p_value >> 0) & 0xFF);
byte highByte = ((p_value >> 8) & 0xFF);
p_address *= 2;
EEPROM.write((p_address + 0), lowByte);
EEPROM.write((p_address + 1), highByte);
}
unsigned int EEPROMReadInt(int p_address)
{ byte lowByte = EEPROM.read(p_address + 0);
byte highByte = EEPROM.read(p_address + 1);
return( ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00) );
}
int tick_state = 0;
int adc_zero = 0;
int adc_val = 0;
int adc_index = 0;
int adc_samp[20] = 0;
double adc_sum;
double adc_rms = 0;
double adc_last;
void setup()
{ Serial.begin(9600); // BAUD 9600,8,N,1
pinMode(2, INPUT); // SWITCH PIN2
adc_zero = EEPROMReadInt(1); // Restore Set.Zero
}
void loop()
{ delay(1); // delay 1ms
if(++tick_state > 1000); tick_state = 0; // state next
//--PushSwitch Store SetZero------------------
if(!digitalRead(2))
{ adc_zero = analogRead(A2);
EEPROMWriteInt(1, adc_zero);
}
if(adc_index < 20) //--Sampling--
{ adc_val = analogRead(A2);
if(adc_val >= adc_zero) adc_samp[adc_index++] = (adc_val - adc_zero);
else adc_samp[adc_index++] = (adc_zero - adc_val);
}
else //--RMS.Process--
{ adc_sum = 0;
for(adc_index=0; adc_index<20; adc_index++)
{ adc_sum += pow(adc_samp[adc_index], 2);
} adc_sum /= 20;
adc_rms = sqrt(adc_sum);
}
//--Display-----------------------------------
if(!(tick_state % 250))
{ adc_rms = (adc_rms + adc_last) / 2;
adc_rms *= cal_value;
Serial.println(adc_rms);
}
}