v12345vtm

shredder1.1

Sep 23rd, 2017
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.20 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 = "shredder v1.0";
  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.  
  118. Serial.print("stand======================="); // debug value
  119.  
  120. Serial.println(stand); // debug value
  121. digitalWrite(debug, LOW);
  122.  
  123. }}
  124.  
  125.  
  126. ISR(TIMER1_COMPA_vect) { //timer1 interrupt 1Hz toggles pin 13 (LED)
  127.  
  128. vrijgaveLCDupdate = false ;
  129. // Serial.print("stand="); // debug value
  130.  
  131. // Serial.println(stand); // debug value
  132. // Serial.print ( digitalRead(knopplus));
  133. // Serial.print( digitalRead(knopmin));
  134. // Serial.println( digitalRead(knopnoodstop));
  135.  
  136.  
  137.  
  138. currentMillis = millis();
  139. if ( (currentMillis - previousMillis) >= 1000) {
  140. previousMillis = previousMillis + 1000;
  141. seconds = seconds + 1;
  142. if (seconds == 60) {
  143. seconds = 0;
  144. minutes = minutes + 1;
  145. if (minutes == 60) {
  146. minutes = 0;
  147. hours = hours + 1;
  148. if (hours == 24) {
  149. hours = 0;
  150. } // end hrs check
  151. } // end minutes check
  152. } // end seconds check
  153. } // end time check
  154.  
  155. //StrHours , StrMinutes , StrSeconds ;
  156. StrHours = String(hours); // convert to string
  157. if (hours < 10)
  158. {
  159. StrHours = "0";
  160. StrHours += String(hours);
  161. }
  162. StrMinutes = String(minutes); // convert to string
  163. if (minutes < 10)
  164. {
  165. StrMinutes = "0";
  166. StrMinutes += String(minutes);
  167. }
  168. StrSeconds = String(seconds); // convert to string
  169. if (seconds < 10)
  170. {
  171. StrSeconds = "0";
  172. StrSeconds += String(seconds);
  173. }
  174.  
  175.  
  176. StrOntime = StrHours + ":" + StrMinutes + ":" + StrSeconds ;
  177.  
  178. // Serial.println("");
  179. // Serial.print(StrHours);
  180. // Serial.print(":");
  181. // Serial.print(StrMinutes);
  182. // Serial.print(":");
  183. // Serial.println(StrSeconds);
  184.  
  185.  
  186. vrijgaveLCDupdate = true ;
  187.  
  188.  
  189.  
  190. }
  191.  
  192. void setup()
  193. {
  194. delay(100);
  195. lcd.init(); // initialize the lcd
  196.  
  197. delay(100);
  198. // Print a message to the LCD.
  199. lcd.backlight();
  200.  
  201.  
  202. delay(100);
  203. Serial.begin(115200);
  204. delay(100);
  205. Serial.println(versie);
  206.  
  207.  
  208.  
  209.  
  210.  
  211. // lcd.blink();
  212. lcd.home();
  213. lcd.print(versie);
  214. lcd.setCursor(3, 1);
  215. lcd.print("plekke 2017");
  216. delay(1000);
  217.  
  218. // lcd.home();
  219. // lcd.setCursor(8, 1);
  220. // lcd.print(StrOntime);
  221. //delay(1000);
  222.  
  223. // lcd.home();
  224. // lcd.print(" 3 2 1 0 1 2 3");
  225. // lcd.setCursor(0, 1);
  226. // lcd.print("99'C 00:00:00");
  227. // delay(2000);
  228.  
  229. pinMode(impulsgever, INPUT);
  230.  
  231. // enable interrupt for pin...
  232. pciSetup(knopplus);
  233. pciSetup(knopmin);
  234. pciSetup(knopnoodstop);
  235.  
  236. cli();//stop interrupts
  237.  
  238.  
  239. // digitalWrite(knopplus, INPUT_PULLUP); // set pullup on
  240. //digitalWrite(knopmin, INPUT_PULLUP); // set pullup on
  241.  
  242. pinMode(snelheidrelaisA, OUTPUT);
  243. pinMode(snelheidrelaisB, OUTPUT);
  244. pinMode(vooruit, OUTPUT);
  245. pinMode(achteruit, OUTPUT);
  246.  
  247. digitalWrite(snelheidrelaisA, HIGH); // set off
  248. digitalWrite(snelheidrelaisB, HIGH); // set off
  249. digitalWrite(vooruit, HIGH); // init alles uit
  250. digitalWrite(achteruit, HIGH); // init alles uit
  251.  
  252.  
  253.  
  254. //set timer1 interrupt at 1Hz
  255. TCCR1A = 0;// set entire TCCR1A register to 0
  256. TCCR1B = 0;// same for TCCR1B
  257. TCNT1 = 0;//initialize counter value to 0
  258. // set compare match register for 1hz increments
  259. OCR1A = 15624;// = (16*10^6) / (1*1024) - 1 (must be <65536)
  260. // OCR1A = 500;//debug vith
  261. // turn on CTC mode
  262. TCCR1B |= (1 << WGM12);
  263. // Set CS12 and CS10 bits for 1024 prescaler
  264. TCCR1B |= (1 << CS12) | (1 << CS10);
  265. // enable timer compare interrupt
  266. TIMSK1 |= (1 << OCIE1A);
  267.  
  268. sei();//allow interrupts
  269.  
  270. }
  271.  
  272. void loop()
  273. {
  274.  
  275. temperatuur = analogRead(tempsensor); // read the input pin
  276.  
  277. // StrTemperatuur = String(temperatuur); // convert to string
  278. if (temperatuur < 10)
  279. {
  280. // StrTemperatuur = "0";
  281. StrTemperatuur = "0" + String(temperatuur) + "'C ";
  282. }
  283. else
  284. {
  285.  
  286. StrTemperatuur = String(temperatuur) + "'C ";
  287. }
  288.  
  289. if (temperatuur > 99)
  290. {
  291. // StrTemperatuur = "99";
  292. StrTemperatuur = "99'C ";
  293. }
  294.  
  295.  
  296.  
  297. //elke seconde mag je lcd updaten
  298.  
  299.  
  300. if (vrijgaveLCDupdate == true )
  301. {
  302. vrijgaveLCDupdate = false ;
  303. lcdlijn2 = StrTemperatuur + StrOntime;
  304. // lcd.home();
  305. lcd.setCursor(0, 1);
  306. delay(200);
  307. lcd.print(lcdlijn2);
  308. //delay(1000);
  309. Serial.println(lcdlijn1);
  310. Serial.println(lcdlijn2 );
  311. }
  312.  
  313.  
  314.  
  315. switch (stand) {
  316. case -3:
  317. digitalWrite(snelheidrelaisA, LOW); // set off
  318. digitalWrite(snelheidrelaisB, LOW); // set off
  319. digitalWrite(vooruit, HIGH); // v/a
  320. digitalWrite(achteruit, LOW); // v/a
  321. lcdlijn1 = ">3< 2 1 0 1 2 3";
  322. lcd.home();
  323. lcd.print(lcdlijn1);
  324.  
  325. break;
  326. case -2:
  327. digitalWrite(snelheidrelaisA, LOW); // set off
  328. digitalWrite(snelheidrelaisB, HIGH); // set off
  329. digitalWrite(vooruit, HIGH); // v/a
  330. digitalWrite(achteruit, LOW); // v/a
  331. lcdlijn1 = "3 >2< 1 0 1 2 3";
  332. lcd.home();
  333. lcd.print(lcdlijn1);
  334.  
  335. break;
  336. case -1:
  337. digitalWrite(snelheidrelaisA, HIGH); // set off
  338. digitalWrite(snelheidrelaisB, LOW); // set off
  339. digitalWrite(vooruit, HIGH); // v/a
  340. digitalWrite(achteruit, LOW); // v/a
  341.  
  342. lcdlijn1 = "3 2 >1< 0 1 2 3" ;
  343. lcd.home();
  344. lcd.print(lcdlijn1);
  345. break;
  346. case 0:
  347. digitalWrite(snelheidrelaisA, HIGH); // set off
  348. digitalWrite(snelheidrelaisB, HIGH); // set off
  349. digitalWrite(vooruit, HIGH); // v/a
  350. digitalWrite(achteruit, HIGH); // v/a
  351.  
  352. lcdlijn1 = "3 2 1 >0< 1 2 3" ;
  353. lcd.home();
  354. lcd.print(lcdlijn1);
  355. break;
  356. case 1:
  357. digitalWrite(snelheidrelaisA, HIGH); // set off
  358. digitalWrite(snelheidrelaisB, LOW); // set off
  359. digitalWrite(vooruit, LOW); // v/a
  360. digitalWrite(achteruit, HIGH); // v/a
  361.  
  362. lcdlijn1 = "3 2 1 0 >1< 2 3" ;
  363. lcd.home();
  364. lcd.print(lcdlijn1);
  365. break;
  366. case 2:
  367. digitalWrite(snelheidrelaisA, LOW); // set off
  368. digitalWrite(snelheidrelaisB, HIGH); // set off
  369. digitalWrite(vooruit, LOW); // v/a
  370. digitalWrite(achteruit, HIGH); // v/a
  371.  
  372. lcdlijn1 = "3 2 1 0 1 >2< 3" ;
  373. lcd.home();
  374. lcd.print(lcdlijn1);
  375. break;
  376. case 3:
  377. digitalWrite(snelheidrelaisA, LOW); // set off
  378. digitalWrite(snelheidrelaisB, LOW); // set off
  379. digitalWrite(vooruit, LOW); // v/a
  380. digitalWrite(achteruit, HIGH); // v/a
  381.  
  382. lcdlijn1 = "3 2 1 0 1 2 >3<" ;
  383. lcd.home();
  384. lcd.print(lcdlijn1);
  385. break;
  386.  
  387.  
  388.  
  389.  
  390. default:
  391. // if nothing else matches, do the default
  392. digitalWrite(snelheidrelaisA, HIGH); // set off
  393. digitalWrite(snelheidrelaisB, HIGH); // set off
  394. digitalWrite(vooruit, HIGH); // v/a
  395. digitalWrite(achteruit, HIGH); // v/a
  396.  
  397. lcdlijn1 = " error stand" ;
  398. lcd.home();
  399. lcd.print(lcdlijn1);
  400. break;
  401. }
  402.  
  403.  
  404.  
  405.  
  406.  
  407. }
Advertisement
Add Comment
Please, Sign In to add comment