При компиляции скетча для аттини 13 выпадает ошибка ругается на это "dCO = analogRead(PB3);" C:\Users\����\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\2.2.0\cores\microcore/Arduino.h:102:11: note: initializing argument 1 of 'int16_t analogRead(analog_pin_t)' int16_t analogRead(analog_pin_t pin); ^~~~~~~~~~ exit status 1 invalid conversion from 'int' to 'analog_pin_t' [-fpermissive] код прилагаю Код (C++): /*Контроль уровня газа и сигнализация в случае опасности. Алгоритм работы: ---Прогрев датчика и замер нормальной концентрации газа. ---Пауза ---Прогрев датчика и замер концентрации газа. ---В случае превышения концентрации пищим тревогу. ---И так в цикле.*/ // AtTity13 // ---- // ADC0 (D5) res 1| |8 Vcc // ADC3 (D3) PB3 2| |7 PB2 (D2) ADC1 // ADC2 (D4) PB4 3| |6 PB1 (D1) PWM1 // GND 4| |5 PB0 (D0) PWM0 // ---- // * PB0-LED // * PB1-BUZZER // * PB3-MQ7 // * PB4-key MQ7 #include <avr/delay.h> //уже есть в ИДЕ подключать не нужно #define porog 100 //порог для тревоги int dCO = 0; //переменная уровня СО int norm_dCO = 0; //переменная нормального уровня СО byte flag_trevoga = 0; //флаг тревоги void setup() { DDRB |= (1 << 0); // устанавливаем вывод PB0 как выход DDRB |= (1 << 1); // устанавливаем вывод PB1 как выход DDRB |= (1 << 4); // устанавливаем вывод PB1 как выход DDRB |= (0 << 3); // устанавливаем вывод PB3 как вход PORTB &= ~(1 << 0); // устанавливаем низкий уровень на выводе PB0 PORTB &= ~(1 << 1); // устанавливаем низкий уровень на выводе PB1 PORTB &= ~(1 << 4); // устанавливаем низкий уровень на выводе PB4 progrev (); //при сиарте меряем уровень СО десять раз находим среднее и принимаем его нормальным PORTB |= (1 << 0); // включаем LED for (int i = 0; i <= 10; i++) { dCO = analogRead(PB3); norm_dCO = norm_dCO + dCO; _delay_ms(10); } norm_dCO = norm_dCO / 10; PORTB &= ~(1 << 4); //выключаем питание датчика PORTB &= ~(1 << 0); // выключаем LED //################## } void loop() { progrev (); PORTB |= (1 << 0); // включаем LED _delay_ms(1000); dCO = analogRead(PB3); PORTB &= ~(1 << 4); //выключаем питание датчика PORTB &= ~(1 << 0); // выключаем LED if (dCO > norm_dCO + porog) { //Если превышен уровень СО flag_trevoga = 1; } if (dCO < norm_dCO + porog) { //Если не превышен уровень СО flag_trevoga = 0; } for (byte i = 0; i < 30; i++) { // пауза 30сек _delay_ms(1000); if (flag_trevoga == 1) { trevoga (); } } } void progrev () { // Греем датчик 30сек PORTB |= (1 << 4); //включаем питание датчика for (byte i = 0; i < 30; i++) { _delay_ms(1000); if (flag_trevoga == 1) { trevoga (); } } } void trevoga () { //пищим for (int i = 0; i < 1000; i++) { PORTB |= (1 << 1); //включаем Buzzer _delay_us(100); PORTB &= ~(1 << 1); //выключаем Buzzer _delay_us(100); } }
Будет Код (C++): analogRead(PIN_PB3); // и так analogRead(3); // и эдак см. https://github.com/MCUdude/MicroCore/blob/master/avr/variants/attiny13/pins_arduino.h