fork download
  1.  
  2. // У нас на плате pro mini ATmega 168 (5v, 16MHz), хотя это и неважно
  3. #include <SoftwareSerial.h> // Подключаем библиотеку
  4.  
  5. SoftwareSerial mySerial(10, 11); // RX, TX Назначаем пины на прием и передачу
  6.  
  7. byte pers = 0; // Переменная для получения данных порта (мощность в процентах)
  8. int pers1;
  9. int pers2;
  10. unsigned int n; // Счетчик непришедших пакетов
  11. unsigned long counting;
  12. unsigned long period;
  13. boolean flag = false;
  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 ((millis() - period) >= 1000) {
  27. impulseLength();
  28. period = millis();
  29. }
  30.  
  31. if (((millis() - counting) >= pers1) && (flag == true)) {
  32. digitalWrite(12, 0); // Выключаем все
  33. digitalWrite(13, 0);
  34. flag = false;
  35. counting = millis();
  36. }
  37. }
  38.  
  39. void receiveData () // Функция получения данных с основной платы.
  40. {
  41. if (mySerial.available())
  42. {
  43. pers = mySerial.read(); // Считываем данные с порта, если там что-то есть
  44. n = 0; // Раз данные пришли, обнулим счетчик
  45. }
  46. else
  47. {
  48. n++; // Считаем, сколько раз не пришли данные
  49. }
  50. if (pers > 100)
  51. {
  52. pers = 0; // Отсечем нереальные значения на всякий случай значение
  53. }
  54.  
  55. if (n > 10) // Если 10 секунд данные не приходят, прекраим подачу импульсов.
  56. {
  57. pers = 0;
  58. }
  59. pers2 = (pers * 10); // Получим длину импульса в милисекундах.
  60. }
  61.  
  62. void impulseLength()
  63. {
  64. if (pers2 == 0) // Если мощность равна 0
  65. {
  66. digitalWrite(12, 0); // Выключаем все
  67. digitalWrite(13, 0);
  68. receiveData (); // Получаем данные с основного контроллера
  69. }
  70. else
  71. {
  72. counting = millis();
  73. digitalWrite(12, HIGH); // Если мощность более 50%
  74. digitalWrite(13, HIGH); // Включаем все
  75. pers1 = pers2; // Запоминаем переменную
  76. receiveData (); // Получаем данные с основного контроллера
  77. flag = true;
  78. }
  79. }
  80.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:3:83: fatal error: SoftwareSerial.h: No such file or directory
 #include <SoftwareSerial.h>           // Подключаем библиотеку
                                                                                   ^
compilation terminated.
stdout
Standard output is empty