51

Re: attiny13

5Вольт. Третья нога, по схеме, подтянута к питанию.

52

Re: attiny13

Добавил паузы после нажатия кнопки

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;
  }        
}

53

Re: attiny13

Если Вы меняли делитель, то измерьте напряжение кнопок и опубликуйте их.

54

Re: attiny13

Да, поменял
Теперь  при нажатии кнопок 0,47В-1,27В-1,64В-2,07В.
При отпускании 5В.

55

Re: attiny13

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;
  }        
}

56 (2024-01-16 19:43:26 отредактировано Karl2233)

Re: attiny13

неа.
бывает включены по 2-3 выхода.

может фьюзы? может третью ногу надо к земле через 10к, а не к 5 Вольтам?

57

Re: attiny13

Попробуйте этот код:

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;
  }        
}

58 (2024-01-17 04:54:53 отредактировано Karl2233)

Re: attiny13

Класс!
Спасибо Александр!
Всё как надо.
Йо-хо-хо и бутылка рома!