Alexcnc

Enkoder+marker test

Sep 8th, 2024
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. //Измерение длинны посредством инкрементального энкодера и фотометки.
  2. //Энкодер PIB3806-360-G5-24C, на 600 импулсов на оборот, длина окружности измерительного колеса 200мм
  3.  
  4. #include <Wire.h>
  5. #include <LiquidCrystal_I2C.h>
  6. LiquidCrystal_I2C lcd(0x27,16,2);
  7.  
  8. volatile long P; // количество счетчика прерываний с енкодера
  9. float E; // длина по енкодеру
  10. pinMode(2, INPUT_PULLUP); // вход сигнала А с энкодера
  11. pinMode(3, INPUT_PULLUP); // вход сигнала с маркера
  12.  
  13. void setup() {
  14. attachInterrupt(0,enkoder,FALLING); // 1 прерывание с энкодера
  15. attachInterrupt(1,marker,FALLING); // 2 прерывание с энкодера
  16. lcd.begin(); // инициализация экрана
  17. lcd.backlight(); // вкл. подсветки
  18. }
  19.  
  20. void loop() // Oбработка вывода на екран и длины с энкодера
  21. {
  22. lcd.setCursor(0,0); // устанавливаем курсор, 1 позиция 0 строка
  23. lcd.print("Size="); // пишем Size=
  24. E=P*0.333 ; // расчет длины с енкодера, коефициент= длина окружности колесика на 200/600=0,33
  25. lcd.print(E,3); // выводим значение E
  26. }
  27.  
  28. void enkoder(){ // обработчик прерывания c энкодера
  29. P=P+1; // инкремент счетчика импульсов энкодера
  30. }
  31.  
  32. // Przerwanie dla markera (wykrycie markera)
  33. void marker() { // обработчик прерывания c энкодера
  34. marker = true; // инкремент счетчика импульсов энкодера
  35. }
Advertisement
Add Comment
Please, Sign In to add comment