fork download
  1. // У нас на плате pro mini ATmega 168 (5v, 16MHz), хотя это и неважно
  2. #include <SoftwareSerial.h> // Подключаем библиотеку
  3.  
  4. SoftwareSerial mySerial(10, 11); // RX, TX Назначаем пины на прием и передачу
  5.  
  6. byte pers; // Переменная для получения данных порта
  7. int x; // Переменная координат алгоритма Брезенхема
  8. int y; // Переменная координат алгоритма Брезенхема
  9. int onoff = 0; // Переменная сигнала на плату симистора
  10. unsigned int n; // Счетчик непришедших пакетов
  11. unsigned long halfWave; // Для отсчета длины полуволны
  12. int i = 1;
  13.  
  14. void setup() {
  15. pinMode(12, OUTPUT); // Назначаем пин на выход (плата симистора)
  16. pinMode(13, OUTPUT); // Назначаем пин на выход (светодиод-контролька)
  17. digitalWrite(12, 0); // выход на плату симистора (отключено)
  18. digitalWrite(13, 0); // Светодиод потушен
  19. // Serial.begin(9600);
  20. mySerial.begin(4800); // Запускаем работу порта
  21. }
  22.  
  23. void loop()
  24. {
  25. if (halfWave == 0 || (millis() - halfWave) >= 10) // Каждые 10 мс.
  26. {
  27. halfWave = millis();
  28. x = i * pers / 100 ;
  29. if (x == y) // Если целая часть после деления осталась неизменной - импульса нет
  30. {
  31. onoff = 0;
  32. }
  33. else // Если целая часть увеличилась - импульс есть.
  34. {
  35. onoff = 1;
  36. }
  37. digitalWrite(12, onoff); // Включаем или выключаем плату симистора и светодиод.
  38. digitalWrite(13, onoff);
  39. y=x;
  40.  
  41. if (i >= 100)
  42. {
  43. i = 0;
  44. y = 0;
  45. receiveData(); // получаем данные
  46. }
  47. ++i;
  48. }
  49. }
  50.  
  51. void receiveData()
  52. {
  53. if (mySerial.available())
  54. {
  55. pers = mySerial.read(); // Считываем данные с порта, если там что-то есть
  56. n = 0; // Раз данные пришли, обнулим счетчик
  57. }
  58. else
  59. {
  60. ++n; // Считаем, сколько раз не пришли данные
  61. }
  62.  
  63. if (pers > 100)
  64. {
  65. pers = 0; // на всякий случай, если значение нереальное
  66. }
  67.  
  68. if (n > 10) // Если 10 секунд данные не приходят, прекратим подачу импульсов.
  69. {
  70. pers = 0;
  71. }
  72. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:2:83: fatal error: SoftwareSerial.h: No such file or directory
 #include <SoftwareSerial.h>           // Подключаем библиотеку
                                                                                   ^
compilation terminated.
stdout
Standard output is empty