Re: attiny13
5Вольт. Третья нога, по схеме, подтянута к питанию.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Разное → attiny13
Чтобы отправить ответ, вы должны войти или зарегистрироваться
5Вольт. Третья нога, по схеме, подтянута к питанию.
Добавил паузы после нажатия кнопки
unsigned int u;
byte input;
void setup() {
/// конфигурация АЦП
ADMUX |= (1<<MUX1);// ADC2 (PB4) input
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADIF);
ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);// Division Factor 128
///
DDRB |= (1 << PB0)|(1 << PB1)|(1 << PB2)|(1 << PB3);// пины PB0-PB3 как выходы
}
void loop() {
while((ADCSRA & (1 << ADIF)) == 0);
u = (ADCL|ADCH << 8);
if(u>60 && u<160){input=0;delay(200);}
if(u>160 && u<260){input=1;delay(200);}
if(u>260 && u<460){input=2;delay(200);}
if(u>460 && u<600){input=3;delay(200);}
switch(input){
case 0: PORTB |= (1<<PB0);PORTB &=~(1 << PB1)|(1 << PB2)|(1 << PB3); break;
case 1: PORTB |= (1<<PB1);PORTB &=~(1 << PB0)|(1 << PB2)|(1 << PB3); break;
case 2: PORTB |= (1<<PB2);PORTB &=~(1 << PB0)|(1 << PB1)|(1 << PB3); break;
case 3: PORTB |= (1<<PB3);PORTB &=~(1 << PB0)|(1 << PB1)|(1 << PB2); break;
}
}
Если Вы меняли делитель, то измерьте напряжение кнопок и опубликуйте их.
Да, поменял
Теперь при нажатии кнопок 0,47В-1,27В-1,64В-2,07В.
При отпускании 5В.
unsigned int u;
byte input;
void setup() {
/// конфигурация АЦП
ADMUX |= (1<<MUX1);// ADC2 (PB4) input
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADIF);
ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);// Division Factor 128
///
DDRB |= (1 << PB0)|(1 << PB1)|(1 << PB2)|(1 << PB3);// пины PB0-PB3 как выходы
}
void loop() {
while((ADCSRA & (1 << ADIF)) == 0);
u = (ADCL|ADCH << 8);
if(u>50 && u<150){input=0;delay(200);}
if(u>150 && u<300){input=1;delay(200);}
if(u>300 && u<400){input=2;delay(200);}
if(u>400 && u<600){input=3;delay(200);}
switch(input){
case 0: PORTB |= (1<<PB0);PORTB &=~(1 << PB1)|(1 << PB2)|(1 << PB3); break;
case 1: PORTB |= (1<<PB1);PORTB &=~(1 << PB0)|(1 << PB2)|(1 << PB3); break;
case 2: PORTB |= (1<<PB2);PORTB &=~(1 << PB0)|(1 << PB1)|(1 << PB3); break;
case 3: PORTB |= (1<<PB3);PORTB &=~(1 << PB0)|(1 << PB1)|(1 << PB2); break;
}
}
неа.
бывает включены по 2-3 выхода.
может фьюзы? может третью ногу надо к земле через 10к, а не к 5 Вольтам?
Попробуйте этот код:
unsigned int u;
byte input;
void setup() {
/// конфигурация АЦП
ADMUX |= (1<<MUX1);// ADC2 (PB4) input
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADIF);
ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);// Division Factor 128
///
DDRB |= (1 << PB0)|(1 << PB1)|(1 << PB2)|(1 << PB3);// пины PB0-PB3 как выходы
}
void loop() {
while((ADCSRA & (1 << ADIF)) == 0);
u = (ADCL|ADCH << 8);
if(u>50 && u<150){input=0;delay(200);}
if(u>150 && u<300){input=1;delay(200);}
if(u>300 && u<400){input=2;delay(200);}
if(u>400 && u<600){input=3;delay(200);}
switch(input){
case 0: PORTB = 0b0001; break;
case 1: PORTB = 0b0010; break;
case 2: PORTB = 0b0100; break;
case 3: PORTB = 0b1000; break;
}
}
Класс!
Спасибо Александр!
Всё как надо.
Йо-хо-хо и бутылка рома!
Индикатор литиевого аккумулятора. Размышления в теории. > 4.2в мигает зеленый светодиод. 4,2 - 3,8в горит зеленый светодиод.3,8-3,4в горит желтый светодиод.3,4-3в горит красный светодиод.<3в мигает красный светодиод. Обычно измеряют напряжение с помощью опорного напряжения. АЦП результат = Uвх*1024/Uref. Думаю, если сделать так, чтобы не делать делитель напряжения. Uвх будет опорным напряжением, например 2.5(1.5)в через TL431(432). А Uref будет настроен на U питания. Главное, чтобы U питания был не меньше 2.5в. Хотя защита литиевого аккумулятора сработает при напряжении 2.5в.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
forum.rcl-radio.ru → Разное → attiny13
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|