Advertisement
alexanderik

SHALAT LEONID

Jun 23rd, 2019
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.14 KB | None | 0 0
  1. // Remote Controller fot __AVR_ATtiny85__
  2. // Alexander Grigoriev 2018
  3. // Made by GAVS for LEON
  4. #include "Arduino.h"
  5. #include <key_header.h>
  6.  
  7. #include <avr/io.h>
  8. //#include <avr/interrupt.h>
  9. //#include <util/delay.h>
  10. //#include <avr/sleep.h>
  11. //#include <compat/deprecated.h>
  12. #include <avr/eeprom.h>
  13.  
  14. //datasheet attiny 85
  15. // http : //ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summary.pdf
  16.  
  17. // pin1, PB5 (PCINT5 / RESET / ADC0 / dW)                                     // pin8, VCC
  18. // pin2, PB3 (PCINT3/XTAL1/CLKI/OC1B/ADC3)                                    // pin7, PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2)
  19. // pin3, PB4 (PCINT4/XTAL2/CLKO/OC1B/ADC2)                                    // pin6, PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1)
  20. // pin4, GND                                                                  // pin5, PB0 (MOSI/DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0)
  21.  
  22. void key1();
  23. void key2();
  24. void key3();
  25. void kkey(int t);
  26.  
  27. #define TRANS_PIN PB3
  28. #define INPUT_PIN0 PB0 // open door
  29. #define INPUT_PIN1 PB1 // close door
  30. #define INPUT_PIN2 PB2 // open offer
  31.  
  32. // #include <rc.h>
  33.  
  34. // volatile char state;
  35. int state;
  36.  
  37. boolean lvl;
  38. int blc;
  39. int offDelay = 150;
  40.  
  41. void setup()
  42. {
  43.   // Configure TRANS_PIN as output
  44.   pinMode(TRANS_PIN, OUTPUT);
  45.  
  46.   pinMode(INPUT_PIN0, INPUT);
  47.   pinMode(INPUT_PIN1, INPUT);
  48.   pinMode(INPUT_PIN2, INPUT);
  49.  
  50.   digitalWrite(INPUT_PIN0, LOW);
  51.   digitalWrite(INPUT_PIN1, LOW);
  52.   digitalWrite(INPUT_PIN2, LOW);
  53.   digitalWrite(TRANS_PIN, LOW);
  54. }
  55.  
  56. void loop()
  57. {
  58.   // Даем объекту бибилотеки знать, что надо обновить состояние - мы вошли в новый цкил loop
  59.   if (digitalRead(INPUT_PIN0))
  60.   {
  61.     delayMicroseconds(200);
  62.     if (digitalRead(INPUT_PIN0))
  63.       state = 1;
  64.   }
  65.   else
  66.  
  67.       if (digitalRead(INPUT_PIN1))
  68.   {
  69.     delayMicroseconds(200);
  70.     if (digitalRead(INPUT_PIN1))
  71.       state = 2;
  72.   }
  73.   else
  74.  
  75.       if (digitalRead(INPUT_PIN2))
  76.   {
  77.     delayMicroseconds(200);
  78.     if (digitalRead(INPUT_PIN2))
  79.       state = 3;
  80.   }
  81.   else
  82.     state = 0;
  83.  
  84.   kkey(state);
  85.  
  86.   digitalWrite(TRANS_PIN, LOW);
  87. }
  88.  
  89. void key1()
  90. {
  91.   lvl = LOW;
  92.   for (int t = 0; t < 155; t++)
  93.   {
  94.     digitalWrite(TRANS_PIN, lvl);
  95.     delayMicroseconds(pgm_read_word_near(&Key1[t]) - offDelay);
  96.     lvl = !lvl;
  97.   }
  98. }
  99.  
  100. void key2()
  101. {
  102.   lvl = LOW;
  103.   for (int t = 0; t < 155; t++)
  104.   {
  105.     digitalWrite(TRANS_PIN, lvl);
  106.     delayMicroseconds(pgm_read_word_near(&Key2[t]) - offDelay);
  107.     lvl = !lvl;
  108.   }
  109. }
  110.  
  111. void key3()
  112. {
  113.   lvl = LOW;
  114.   for (int t = 0; t < 108; t++)
  115.   {
  116.     digitalWrite(TRANS_PIN, lvl);
  117.     delayMicroseconds(pgm_read_word_near(&Key3[t]) - offDelay);
  118.     lvl = !lvl;
  119.   }
  120. }
  121.  
  122. void kkey(int e)
  123. {
  124.  
  125.   /*
  126. for (int y=1; y<= e; y++)
  127. {
  128. digitalWrite(TRANS_PIN,HIGH);
  129. delayMicroseconds(1000);
  130. digitalWrite(TRANS_PIN, LOW);
  131. delayMicroseconds(1000);
  132. }
  133.  
  134. delayMicroseconds(5000);
  135.  
  136. */
  137.  
  138.   switch (e)
  139.   {
  140.   case 1:
  141.     key3();
  142.     break;
  143.   case 2:
  144.     key2();
  145.     break;
  146.   case 3:
  147.     key1();
  148.     break;
  149.   }
  150.  
  151. //  delayMicroseconds(200);
  152.   state = 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement