Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include <avr/io.h>
  2.  
  3. #define gr 200
  4. #define led PD4
  5.  
  6. int R_s1_adc = 0;
  7. int R_s2_adc = 0;
  8. int R_s3_adc = 0;
  9. int R_s4_adc = 0;
  10. int L_s5_adc = 0;
  11. int L_s6_adc = 0;
  12. int L_s7_adc = 0;
  13. int L_s8_adc = 0;
  14.  
  15. int main(void) {
  16. DDRD |= (1 << led);
  17. DDRC = 0b00000000; //cały port to wejście
  18.  
  19. ADMUX |= (1 << REFS0); //tryb
  20. ADCSRA |= (1 << ADPS1) | (1 << ADPS0); //prescaler 128
  21. ADCSRA |= (1 << ADEN); //ENABLE
  22.  
  23. ADCSRA |= 1 << ADSC; //single conversion
  24.  
  25. while (1)
  26. {
  27. wykrywanie(68);
  28. if (R_s1_adc > gr) {
  29. PORTD |= (1 << led);
  30. }
  31. else {
  32. PORTD |= (0 << led);
  33. }
  34. }
  35. }
  36.  
  37. int wykrywanie(int8_t x)
  38. {
  39. uint8_t theLow = ADCL;
  40. uint16_t wynik = ADCH << 8 | theLow;
  41.  
  42. switch (x)
  43. {
  44. case 0b01000000:
  45. L_s8_adc = wynik;
  46. ADMUX = 0b01000001;
  47. break;
  48. case 0b01000001:
  49. L_s7_adc = wynik;
  50. ADMUX = 0b01000010;
  51. break;
  52. case 0b01000010:
  53. R_s4_adc = wynik;
  54. ADMUX = 0b01000011;
  55. break;
  56. case 0b01000011:
  57. R_s3_adc = wynik;
  58. ADMUX = 0b01000100;
  59. break;
  60. case 0b01000100:
  61. ADCSRA |= (1 << ADSC);
  62. while (ADCSRA & (1 << ADSC));
  63. R_s1_adc = ADCW;
  64. break;
  65. case 0b01000101:
  66. R_s2_adc = wynik;
  67. ADMUX = 0b01000110;
  68. break;
  69. case 0b01000110:
  70. L_s5_adc = wynik;
  71. ADMUX = 0x0b01000111;
  72. break;
  73. case 0b01000111:
  74. L_s6_adc = wynik;
  75. ADMUX = 0b01000000;
  76. break;
  77. default:
  78. //Default code
  79. break;
  80. }
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement