Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #define gr 200
- #define led PD4
- int R_s1_adc = 0;
- int R_s2_adc = 0;
- int R_s3_adc = 0;
- int R_s4_adc = 0;
- int L_s5_adc = 0;
- int L_s6_adc = 0;
- int L_s7_adc = 0;
- int L_s8_adc = 0;
- int main(void) {
- DDRD |= (1 << led);
- DDRC = 0b00000000; //cały port to wejście
- ADMUX |= (1 << REFS0); //tryb
- ADCSRA |= (1 << ADPS1) | (1 << ADPS0); //prescaler 128
- ADCSRA |= (1 << ADEN); //ENABLE
- ADCSRA |= 1 << ADSC; //single conversion
- while (1)
- {
- wykrywanie(68);
- if (R_s1_adc > gr) {
- PORTD |= (1 << led);
- }
- else {
- PORTD |= (0 << led);
- }
- }
- }
- int wykrywanie(int8_t x)
- {
- uint8_t theLow = ADCL;
- uint16_t wynik = ADCH << 8 | theLow;
- switch (x)
- {
- case 0b01000000:
- L_s8_adc = wynik;
- ADMUX = 0b01000001;
- break;
- case 0b01000001:
- L_s7_adc = wynik;
- ADMUX = 0b01000010;
- break;
- case 0b01000010:
- R_s4_adc = wynik;
- ADMUX = 0b01000011;
- break;
- case 0b01000011:
- R_s3_adc = wynik;
- ADMUX = 0b01000100;
- break;
- case 0b01000100:
- ADCSRA |= (1 << ADSC);
- while (ADCSRA & (1 << ADSC));
- R_s1_adc = ADCW;
- break;
- case 0b01000101:
- R_s2_adc = wynik;
- ADMUX = 0b01000110;
- break;
- case 0b01000110:
- L_s5_adc = wynik;
- ADMUX = 0x0b01000111;
- break;
- case 0b01000111:
- L_s6_adc = wynik;
- ADMUX = 0b01000000;
- break;
- default:
- //Default code
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement