s328o8.name=Sensor328 (int8MHz, 1.8V)
s328o8.upload.protocol=arduino
s328o8.upload.maximum_size=30720
s328o8.upload.speed=19200
s328o8.bootloader.low_fuses=0xe2
s328o8.bootloader.high_fuses=0xda
s328o8.bootloader.extended_fuses=0x06
s328o8.bootloader.path=atmega
s328o8.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
s328o8.bootloader.unlock_bits=0x3F
s328o8.bootloader.lock_bits=0x0F
s328o8.build.mcu=atmega328p
s328o8.build.f_cpu=8000000L
s328o8.build.core=arduino
s328o8.build.variant=standard
s328o1.name=Sensor328p (int1MHz, 1.8V)
s328o1.upload.protocol=arduino
s328o1.upload.maximum_size=30720
s328o1.upload.speed=19200
s328o1.bootloader.low_fuses=0x62
s328o1.bootloader.high_fuses=0xda
s328o1.bootloader.extended_fuses=0x06
s328o1.bootloader.path=atmega
s328o1.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
s328o1.bootloader.unlock_bits=0x3F
s328o1.bootloader.lock_bits=0x0F
s328o1.build.mcu=atmega328p
s328o1.build.f_cpu=1000000L
s328o1.build.core=arduino
s328o1.build.variant=standard
.
//
typedef struct{
int SensorID; //
int ParamID; //
float ParamValue; //
char Comment[16]; //
}
Message;
///
typedef struct{
float Value; //
char Note[16]; //
}
Parameter;
Parameter MySensors[NumSensors+1] = { // ( )
NumSensors, "SN1 (in)", // ""
0, "TempIN, C", //
0, "VCC, V", // ( )
0, "BATT" // , (0 - "", 1 - "")
};
Message sensor;
Parameter MySensors[NumSensors+1] = { // ( )
NumSensors, "SN1 (in&out)", // ""
0, "TempIN, C", //
0, "VCC, V", // ( )
0, "BATT", // , (0 - "", 1 - "")
0, "TempOUT, C" //
};
Message sensor;
long readVcc() {
// Read 1.1V reference against AVcc
// set the reference to Vcc and the measurement to the internal 1.1V reference
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0);
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
ADMUX = _BV(MUX3) | _BV(MUX2);
#else
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#endif
delay(75); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring
uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both
long result = (high<<8) | low;
result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
return result; // Vcc in millivolts
}
//
void calculateValue(){
//
//
MySensors[2].Value = ((float) readVcc())/1000.0;
// ( 3)
MySensors[1].Value = (((float)analogRead(A3) * MySensors[2].Value / 1024.0) - 0.5)/0.01;
// 2.4 - "" (1)
// - " " (0)
MySensors[3].Value = (MySensors[2].Value > 2.4) ? 1 : 0;
return;
}
//
void calculateValue(){
//
//
MySensors[2].Value = ((float) readVcc())/1000.0;
// ( 3)
MySensors[1].Value = (((float)analogRead(A3) * MySensors[2].Value / 1024.0) - 0.5)/0.01;
// 2.4 - "" (1)
// - " " (0)
MySensors[3].Value = (MySensors[2].Value > 2.4) ? 1 : 0;
// ( 1 "Analog")
MySensors[4].Value = (((float)analogRead(A1) * MySensors[2].Value / 1024.0) - 0.5)/0.01;
return;
}
Parameter MySensors[NumSensors+1] = { // ( )
NumSensors, "iBoard NTP", // ""
0, "Date (yymm.dd)", //
0, "Time (hhmm.ss)" //
};
Message sensor;
#define TimeOffset 4 // - GMT +4 ()
Source: https://habr.com/ru/post/202898/
All Articles