Advertisement
v12345vtm

shredder2.ino

Dec 8th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.29 KB | None | 0 0
  1. //DFRobot.com
  2. //http://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_%28SKU:_DFR0063%29
  3.  
  4.  
  5. //in LiquidCrystal_I2C.cpp
  6. //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/issues/2
  7. ///#define printIIC(args) Wire.write(args)
  8. ///inline size_t LiquidCrystal_I2C::write(uint8_t value) {
  9. // send(value, Rs);
  10. // return 1;
  11. //}
  12.  
  13. String versie = "shredder2.ino";
  14. bool vrijgaveLCDupdate = true ;
  15. int stand = 0;
  16. int seconds ;
  17. int minutes;
  18. int hours;
  19. byte temperatuur = 99; //via de tempsensor in de motor zelf
  20. String StrTemperatuur = "--'C ";
  21. String StrHours , StrMinutes , StrSeconds ;
  22. String StrOntime = "--:--:--";
  23. String lcdlijn1 = "";
  24. String lcdlijn2 = "";
  25. unsigned long currentMillis ;
  26. unsigned long previousMillis ;
  27.  
  28.  
  29. #include <Wire.h>
  30. #include <LiquidCrystal_I2C.h>
  31.  
  32. LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
  33. //lijst met I/O en roepnaam
  34.  
  35. #define tempsensor A3
  36. #define knopnoodstop A2
  37. #define knopplus A0
  38. #define knopmin A1
  39. #define sda A4
  40. #define scl A5
  41. #define rxd 0
  42. #define txd 1
  43. #define snelheidrelaisA 2
  44. #define snelheidrelaisB 3
  45. #define vooruit 4
  46. #define achteruit 5
  47. #define impulsgever 6
  48. #define vrij 7
  49. #define vrij 8
  50. #define vrij 9
  51. #define vrij 10
  52. #define vrij 11
  53. #define vrij 12
  54. #define debug 13
  55.  
  56.  
  57. void pciSetup(byte pin)
  58. {
  59. *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); // enable pin
  60. PCIFR |= bit (digitalPinToPCICRbit(pin)); // clear any outstanding interrupt
  61. PCICR |= bit (digitalPinToPCICRbit(pin)); // enable interrupt for the group
  62. }
  63.  
  64.  
  65.  
  66. ISR(PCINT1_vect) // handle pin change interrupt for A0 to A5 here
  67. {
  68. Serial.print ( digitalRead(knopplus));
  69. Serial.print( digitalRead(knopmin));
  70. Serial.println( digitalRead(knopnoodstop));
  71.  
  72. // if (digitalRead(knopplus) == 1 ) {
  73. // Serial.println( "\n terugkeerflank onbelangrijk+ " );
  74. // }
  75. //
  76. //
  77. // if (digitalRead(knopmin) == 1 ) {
  78. // Serial.println( "\n terugkeerflank onbelangrijk- " );
  79. // }
  80. //
  81. // if (digitalRead(knopnoodstop) == 1 ) {
  82. // Serial.println( "\n terugkeerflank onbelangrijkNS " );
  83. // }
  84.  
  85.  
  86. if (digitalRead(knopnoodstop) == 1 and digitalRead(knopmin) == 1 and digitalRead(knopplus) == 1) {
  87. Serial.println( "alle knoppen in rust " );
  88. }
  89.  
  90. else
  91. {
  92. digitalWrite(debug, HIGH);
  93. delay (500);
  94. Serial.println("------------int");
  95.  
  96. if (digitalRead(knopnoodstop) == 0 ) {
  97. // Serial.println( "a2 =1" );
  98. digitalWrite(vooruit, HIGH);
  99. digitalWrite(achteruit, HIGH);
  100. stand = 0 ;
  101. // Serial.println("\n\n\n\n NOODSTOP");
  102. }
  103.  
  104.  
  105. if (digitalRead(knopplus) == 0 & stand < 3 ) {
  106. // Serial.println( "knopplus =1" );
  107.  
  108. stand ++ ;
  109. }
  110.  
  111. ///////////////////////////
  112. if (digitalRead(knopmin) == 0 & stand > -3) {
  113. // Serial.println( "knopmin =1" );
  114.  
  115. stand -- ;
  116.  
  117. //update praktischer gebruik shcredder 7dec2017
  118. if (stand >0)
  119. {stand = 0;}
  120.  
  121.  
  122.  
  123. }
  124.  
  125. Serial.print("stand======================="); // debug value
  126.  
  127. Serial.println(stand); // debug value
  128. digitalWrite(debug, LOW);
  129.  
  130. }}
  131.  
  132.  
  133. ISR(TIMER1_COMPA_vect) { //timer1 interrupt 1Hz toggles pin 13 (LED)
  134.  
  135. vrijgaveLCDupdate = false ;
  136. // Serial.print("stand="); // debug value
  137.  
  138. // Serial.println(stand); // debug value
  139. // Serial.print ( digitalRead(knopplus));
  140. // Serial.print( digitalRead(knopmin));
  141. // Serial.println( digitalRead(knopnoodstop));
  142.  
  143.  
  144.  
  145. currentMillis = millis();
  146. if ( (currentMillis - previousMillis) >= 1000) {
  147. previousMillis = previousMillis + 1000;
  148. seconds = seconds + 1;
  149. if (seconds == 60) {
  150. seconds = 0;
  151. minutes = minutes + 1;
  152. if (minutes == 60) {
  153. minutes = 0;
  154. hours = hours + 1;
  155. if (hours == 24) {
  156. hours = 0;
  157. } // end hrs check
  158. } // end minutes check
  159. } // end seconds check
  160. } // end time check
  161.  
  162. //StrHours , StrMinutes , StrSeconds ;
  163. StrHours = String(hours); // convert to string
  164. if (hours < 10)
  165. {
  166. StrHours = "0";
  167. StrHours += String(hours);
  168. }
  169. StrMinutes = String(minutes); // convert to string
  170. if (minutes < 10)
  171. {
  172. StrMinutes = "0";
  173. StrMinutes += String(minutes);
  174. }
  175. StrSeconds = String(seconds); // convert to string
  176. if (seconds < 10)
  177. {
  178. StrSeconds = "0";
  179. StrSeconds += String(seconds);
  180. }
  181.  
  182.  
  183. StrOntime = StrHours + ":" + StrMinutes + ":" + StrSeconds ;
  184.  
  185. // Serial.println("");
  186. // Serial.print(StrHours);
  187. // Serial.print(":");
  188. // Serial.print(StrMinutes);
  189. // Serial.print(":");
  190. // Serial.println(StrSeconds);
  191.  
  192.  
  193. vrijgaveLCDupdate = true ;
  194.  
  195.  
  196.  
  197. }
  198.  
  199. void setup()
  200. {
  201. delay(100);
  202. lcd.init(); // initialize the lcd
  203.  
  204. delay(100);
  205. // Print a message to the LCD.
  206. lcd.backlight();
  207.  
  208.  
  209. delay(100);
  210. Serial.begin(115200);
  211. delay(100);
  212. Serial.println(versie);
  213.  
  214.  
  215.  
  216.  
  217.  
  218. // lcd.blink();
  219. lcd.home();
  220. lcd.print(versie);
  221. lcd.setCursor(3, 1);
  222. lcd.print("plekke 2017");
  223. delay(1000);
  224.  
  225. // lcd.home();
  226. // lcd.setCursor(8, 1);
  227. // lcd.print(StrOntime);
  228. //delay(1000);
  229.  
  230. // lcd.home();
  231. // lcd.print(" 3 2 1 0 1 2 3");
  232. // lcd.setCursor(0, 1);
  233. // lcd.print("99'C 00:00:00");
  234. // delay(2000);
  235.  
  236. pinMode(impulsgever, INPUT);
  237.  
  238. // enable interrupt for pin...
  239. pciSetup(knopplus);
  240. pciSetup(knopmin);
  241. pciSetup(knopnoodstop);
  242.  
  243. cli();//stop interrupts
  244.  
  245.  
  246. // digitalWrite(knopplus, INPUT_PULLUP); // set pullup on
  247. //digitalWrite(knopmin, INPUT_PULLUP); // set pullup on
  248.  
  249. pinMode(snelheidrelaisA, OUTPUT);
  250. pinMode(snelheidrelaisB, OUTPUT);
  251. pinMode(vooruit, OUTPUT);
  252. pinMode(achteruit, OUTPUT);
  253.  
  254. digitalWrite(snelheidrelaisA, HIGH); // set off
  255. digitalWrite(snelheidrelaisB, HIGH); // set off
  256. digitalWrite(vooruit, HIGH); // init alles uit
  257. digitalWrite(achteruit, HIGH); // init alles uit
  258.  
  259.  
  260.  
  261. //set timer1 interrupt at 1Hz
  262. TCCR1A = 0;// set entire TCCR1A register to 0
  263. TCCR1B = 0;// same for TCCR1B
  264. TCNT1 = 0;//initialize counter value to 0
  265. // set compare match register for 1hz increments
  266. OCR1A = 15624;// = (16*10^6) / (1*1024) - 1 (must be <65536)
  267. // OCR1A = 500;//debug vith
  268. // turn on CTC mode
  269. TCCR1B |= (1 << WGM12);
  270. // Set CS12 and CS10 bits for 1024 prescaler
  271. TCCR1B |= (1 << CS12) | (1 << CS10);
  272. // enable timer compare interrupt
  273. TIMSK1 |= (1 << OCIE1A);
  274.  
  275. sei();//allow interrupts
  276.  
  277. }
  278.  
  279. void loop()
  280. {
  281.  
  282. temperatuur = analogRead(tempsensor); // read the input pin
  283.  
  284. // StrTemperatuur = String(temperatuur); // convert to string
  285. if (temperatuur < 10)
  286. {
  287. // StrTemperatuur = "0";
  288. StrTemperatuur = "0" + String(temperatuur) + "'C ";
  289. }
  290. else
  291. {
  292.  
  293. StrTemperatuur = String(temperatuur) + "'C ";
  294. }
  295.  
  296. if (temperatuur > 99)
  297. {
  298. // StrTemperatuur = "99";
  299. StrTemperatuur = "99'C ";
  300. }
  301.  
  302.  
  303.  
  304. //elke seconde mag je lcd updaten
  305.  
  306.  
  307. if (vrijgaveLCDupdate == true )
  308. {
  309. vrijgaveLCDupdate = false ;
  310. lcdlijn2 = StrTemperatuur + StrOntime;
  311. // lcd.home();
  312. lcd.setCursor(0, 1);
  313. delay(200);
  314. lcd.print(lcdlijn2);
  315. //delay(1000);
  316. Serial.println(lcdlijn1);
  317. Serial.println(lcdlijn2 );
  318. }
  319.  
  320.  
  321.  
  322. switch (stand) {
  323. case -3:
  324. digitalWrite(snelheidrelaisA, LOW); // set off
  325. digitalWrite(snelheidrelaisB, LOW); // set off
  326. digitalWrite(vooruit, HIGH); // v/a
  327. digitalWrite(achteruit, LOW); // v/a
  328. lcdlijn1 = ">3< 2 1 0 1 2 3";
  329. lcd.home();
  330. lcd.print(lcdlijn1);
  331.  
  332. break;
  333. case -2:
  334. digitalWrite(snelheidrelaisA, LOW); // set off
  335. digitalWrite(snelheidrelaisB, HIGH); // set off
  336. digitalWrite(vooruit, HIGH); // v/a
  337. digitalWrite(achteruit, LOW); // v/a
  338. lcdlijn1 = "3 >2< 1 0 1 2 3";
  339. lcd.home();
  340. lcd.print(lcdlijn1);
  341.  
  342. break;
  343. case -1:
  344. digitalWrite(snelheidrelaisA, HIGH); // set off
  345. digitalWrite(snelheidrelaisB, LOW); // set off
  346. digitalWrite(vooruit, HIGH); // v/a
  347. digitalWrite(achteruit, LOW); // v/a
  348.  
  349. lcdlijn1 = "3 2 >1< 0 1 2 3" ;
  350. lcd.home();
  351. lcd.print(lcdlijn1);
  352. break;
  353. case 0:
  354. digitalWrite(snelheidrelaisA, HIGH); // set off
  355. digitalWrite(snelheidrelaisB, HIGH); // set off
  356. digitalWrite(vooruit, HIGH); // v/a
  357. digitalWrite(achteruit, HIGH); // v/a
  358.  
  359. lcdlijn1 = "3 2 1 >0< 1 2 3" ;
  360. lcd.home();
  361. lcd.print(lcdlijn1);
  362. break;
  363. case 1:
  364. digitalWrite(snelheidrelaisA, HIGH); // set off
  365. digitalWrite(snelheidrelaisB, LOW); // set off
  366. digitalWrite(vooruit, LOW); // v/a
  367. digitalWrite(achteruit, HIGH); // v/a
  368.  
  369. lcdlijn1 = "3 2 1 0 >1< 2 3" ;
  370. lcd.home();
  371. lcd.print(lcdlijn1);
  372. break;
  373. case 2:
  374. digitalWrite(snelheidrelaisA, LOW); // set off
  375. digitalWrite(snelheidrelaisB, HIGH); // set off
  376. digitalWrite(vooruit, LOW); // v/a
  377. digitalWrite(achteruit, HIGH); // v/a
  378.  
  379. lcdlijn1 = "3 2 1 0 1 >2< 3" ;
  380. lcd.home();
  381. lcd.print(lcdlijn1);
  382. break;
  383. case 3:
  384. digitalWrite(snelheidrelaisA, LOW); // set off
  385. digitalWrite(snelheidrelaisB, LOW); // set off
  386. digitalWrite(vooruit, LOW); // v/a
  387. digitalWrite(achteruit, HIGH); // v/a
  388.  
  389. lcdlijn1 = "3 2 1 0 1 2 >3<" ;
  390. lcd.home();
  391. lcd.print(lcdlijn1);
  392. break;
  393.  
  394.  
  395.  
  396.  
  397. default:
  398. // if nothing else matches, do the default
  399. digitalWrite(snelheidrelaisA, HIGH); // set off
  400. digitalWrite(snelheidrelaisB, HIGH); // set off
  401. digitalWrite(vooruit, HIGH); // v/a
  402. digitalWrite(achteruit, HIGH); // v/a
  403.  
  404. lcdlijn1 = " error stand" ;
  405. lcd.home();
  406. lcd.print(lcdlijn1);
  407. break;
  408. }
  409.  
  410.  
  411.  
  412.  
  413.  
  414. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement