fork(2) 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. unsigned long periodSec; // Для отсчета периода в 1 сек
  13. int i = 1;
  14.  
  15. void setup() {
  16. pinMode(12, OUTPUT); // Назначаем пин на выход (плата симистора)
  17. pinMode(13, OUTPUT); // Назначаем пин на выход (светодиод-контролька)
  18. digitalWrite(12, 0); // выход на плату симистора (отключено)
  19. digitalWrite(13, 0); // Светодиод потушен
  20. // Serial.begin(9600);
  21. mySerial.begin(4800); // Запускаем работу порта
  22. }
  23.  
  24. void loop()
  25. {
  26. if (periodSec == 0 || (millis() - periodSec) >= 1000) // Один раз в секунду принимаем данные
  27. {
  28. periodSec = millis();
  29. receiveData();
  30. }
  31.  
  32. if (halfWave == 0 || (millis() - halfWave) >= 10) // Один раз в 10мс включаем или выключаем импульс
  33. {
  34. halfWave = millis();
  35. x = i * pers / 100 ;
  36. if (x == y) // Если целая часть после деления осталась неизменной - импульса нет
  37. {
  38. onoff = 0;
  39. }
  40. else // Если целая часть увеличилась - импульс есть.
  41. {
  42. onoff = 1;
  43. }
  44. digitalWrite(12, onoff); // Включаем или выключаем плату симистора и светодиод.
  45. digitalWrite(13, onoff);
  46. y=x;
  47. if (i >= 100) // После 100 раз, начинаем сначала
  48. {
  49. i = 0;
  50. y = 0;
  51. }
  52. ++i;
  53. }
  54. }
  55.  
  56. void receiveData()
  57. {
  58. if (mySerial.available())
  59. {
  60. pers = mySerial.read(); // Считываем данные с порта, если там что-то есть
  61. n = 0; // Раз данные пришли, обнулим счетчик
  62. }
  63. else
  64. {
  65. ++n; // Считаем, сколько раз не пришли данные
  66. }
  67.  
  68. if (pers > 100)
  69. {
  70. pers = 0; // на всякий случай, если значение нереальное
  71. }
  72.  
  73. if (n > 10) // Если 10 секунд данные не приходят, прекратим подачу импульсов.
  74. {
  75. pers = 0;
  76. }
  77. }
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