v12345vtm

shredder1.0

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