Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //DFRobot.com
- //http://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_%28SKU:_DFR0063%29
- //in LiquidCrystal_I2C.cpp
- //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/issues/2
- ///#define printIIC(args) Wire.write(args)
- ///inline size_t LiquidCrystal_I2C::write(uint8_t value) {
- // send(value, Rs);
- // return 1;
- //}
- String versie = "shredder2.ino";
- bool vrijgaveLCDupdate = true ;
- int stand = 0;
- int seconds ;
- int minutes;
- int hours;
- byte temperatuur = 99; //via de tempsensor in de motor zelf
- String StrTemperatuur = "--'C ";
- String StrHours , StrMinutes , StrSeconds ;
- String StrOntime = "--:--:--";
- String lcdlijn1 = "";
- String lcdlijn2 = "";
- unsigned long currentMillis ;
- unsigned long previousMillis ;
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
- //lijst met I/O en roepnaam
- #define tempsensor A3
- #define knopnoodstop A2
- #define knopplus A0
- #define knopmin A1
- #define sda A4
- #define scl A5
- #define rxd 0
- #define txd 1
- #define snelheidrelaisA 2
- #define snelheidrelaisB 3
- #define vooruit 4
- #define achteruit 5
- #define impulsgever 6
- #define vrij 7
- #define vrij 8
- #define vrij 9
- #define vrij 10
- #define vrij 11
- #define vrij 12
- #define debug 13
- void pciSetup(byte pin)
- {
- *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); // enable pin
- PCIFR |= bit (digitalPinToPCICRbit(pin)); // clear any outstanding interrupt
- PCICR |= bit (digitalPinToPCICRbit(pin)); // enable interrupt for the group
- }
- ISR(PCINT1_vect) // handle pin change interrupt for A0 to A5 here
- {
- Serial.print ( digitalRead(knopplus));
- Serial.print( digitalRead(knopmin));
- Serial.println( digitalRead(knopnoodstop));
- // if (digitalRead(knopplus) == 1 ) {
- // Serial.println( "\n terugkeerflank onbelangrijk+ " );
- // }
- //
- //
- // if (digitalRead(knopmin) == 1 ) {
- // Serial.println( "\n terugkeerflank onbelangrijk- " );
- // }
- //
- // if (digitalRead(knopnoodstop) == 1 ) {
- // Serial.println( "\n terugkeerflank onbelangrijkNS " );
- // }
- if (digitalRead(knopnoodstop) == 1 and digitalRead(knopmin) == 1 and digitalRead(knopplus) == 1) {
- Serial.println( "alle knoppen in rust " );
- }
- else
- {
- digitalWrite(debug, HIGH);
- delay (500);
- Serial.println("------------int");
- if (digitalRead(knopnoodstop) == 0 ) {
- // Serial.println( "a2 =1" );
- digitalWrite(vooruit, HIGH);
- digitalWrite(achteruit, HIGH);
- stand = 0 ;
- // Serial.println("\n\n\n\n NOODSTOP");
- }
- if (digitalRead(knopplus) == 0 & stand < 3 ) {
- // Serial.println( "knopplus =1" );
- stand ++ ;
- }
- ///////////////////////////
- if (digitalRead(knopmin) == 0 & stand > -3) {
- // Serial.println( "knopmin =1" );
- stand -- ;
- //update praktischer gebruik shcredder 7dec2017
- if (stand >0)
- {stand = 0;}
- }
- Serial.print("stand======================="); // debug value
- Serial.println(stand); // debug value
- digitalWrite(debug, LOW);
- }}
- ISR(TIMER1_COMPA_vect) { //timer1 interrupt 1Hz toggles pin 13 (LED)
- vrijgaveLCDupdate = false ;
- // Serial.print("stand="); // debug value
- // Serial.println(stand); // debug value
- // Serial.print ( digitalRead(knopplus));
- // Serial.print( digitalRead(knopmin));
- // Serial.println( digitalRead(knopnoodstop));
- currentMillis = millis();
- if ( (currentMillis - previousMillis) >= 1000) {
- previousMillis = previousMillis + 1000;
- seconds = seconds + 1;
- if (seconds == 60) {
- seconds = 0;
- minutes = minutes + 1;
- if (minutes == 60) {
- minutes = 0;
- hours = hours + 1;
- if (hours == 24) {
- hours = 0;
- } // end hrs check
- } // end minutes check
- } // end seconds check
- } // end time check
- //StrHours , StrMinutes , StrSeconds ;
- StrHours = String(hours); // convert to string
- if (hours < 10)
- {
- StrHours = "0";
- StrHours += String(hours);
- }
- StrMinutes = String(minutes); // convert to string
- if (minutes < 10)
- {
- StrMinutes = "0";
- StrMinutes += String(minutes);
- }
- StrSeconds = String(seconds); // convert to string
- if (seconds < 10)
- {
- StrSeconds = "0";
- StrSeconds += String(seconds);
- }
- StrOntime = StrHours + ":" + StrMinutes + ":" + StrSeconds ;
- // Serial.println("");
- // Serial.print(StrHours);
- // Serial.print(":");
- // Serial.print(StrMinutes);
- // Serial.print(":");
- // Serial.println(StrSeconds);
- vrijgaveLCDupdate = true ;
- }
- void setup()
- {
- delay(100);
- lcd.init(); // initialize the lcd
- delay(100);
- // Print a message to the LCD.
- lcd.backlight();
- delay(100);
- Serial.begin(115200);
- delay(100);
- Serial.println(versie);
- // lcd.blink();
- lcd.home();
- lcd.print(versie);
- lcd.setCursor(3, 1);
- lcd.print("plekke 2017");
- delay(1000);
- // lcd.home();
- // lcd.setCursor(8, 1);
- // lcd.print(StrOntime);
- //delay(1000);
- // lcd.home();
- // lcd.print(" 3 2 1 0 1 2 3");
- // lcd.setCursor(0, 1);
- // lcd.print("99'C 00:00:00");
- // delay(2000);
- pinMode(impulsgever, INPUT);
- // enable interrupt for pin...
- pciSetup(knopplus);
- pciSetup(knopmin);
- pciSetup(knopnoodstop);
- cli();//stop interrupts
- // digitalWrite(knopplus, INPUT_PULLUP); // set pullup on
- //digitalWrite(knopmin, INPUT_PULLUP); // set pullup on
- pinMode(snelheidrelaisA, OUTPUT);
- pinMode(snelheidrelaisB, OUTPUT);
- pinMode(vooruit, OUTPUT);
- pinMode(achteruit, OUTPUT);
- digitalWrite(snelheidrelaisA, HIGH); // set off
- digitalWrite(snelheidrelaisB, HIGH); // set off
- digitalWrite(vooruit, HIGH); // init alles uit
- digitalWrite(achteruit, HIGH); // init alles uit
- //set timer1 interrupt at 1Hz
- TCCR1A = 0;// set entire TCCR1A register to 0
- TCCR1B = 0;// same for TCCR1B
- TCNT1 = 0;//initialize counter value to 0
- // set compare match register for 1hz increments
- OCR1A = 15624;// = (16*10^6) / (1*1024) - 1 (must be <65536)
- // OCR1A = 500;//debug vith
- // turn on CTC mode
- TCCR1B |= (1 << WGM12);
- // Set CS12 and CS10 bits for 1024 prescaler
- TCCR1B |= (1 << CS12) | (1 << CS10);
- // enable timer compare interrupt
- TIMSK1 |= (1 << OCIE1A);
- sei();//allow interrupts
- }
- void loop()
- {
- temperatuur = analogRead(tempsensor); // read the input pin
- // StrTemperatuur = String(temperatuur); // convert to string
- if (temperatuur < 10)
- {
- // StrTemperatuur = "0";
- StrTemperatuur = "0" + String(temperatuur) + "'C ";
- }
- else
- {
- StrTemperatuur = String(temperatuur) + "'C ";
- }
- if (temperatuur > 99)
- {
- // StrTemperatuur = "99";
- StrTemperatuur = "99'C ";
- }
- //elke seconde mag je lcd updaten
- if (vrijgaveLCDupdate == true )
- {
- vrijgaveLCDupdate = false ;
- lcdlijn2 = StrTemperatuur + StrOntime;
- // lcd.home();
- lcd.setCursor(0, 1);
- delay(200);
- lcd.print(lcdlijn2);
- //delay(1000);
- Serial.println(lcdlijn1);
- Serial.println(lcdlijn2 );
- }
- switch (stand) {
- case -3:
- digitalWrite(snelheidrelaisA, LOW); // set off
- digitalWrite(snelheidrelaisB, LOW); // set off
- digitalWrite(vooruit, HIGH); // v/a
- digitalWrite(achteruit, LOW); // v/a
- lcdlijn1 = ">3< 2 1 0 1 2 3";
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- case -2:
- digitalWrite(snelheidrelaisA, LOW); // set off
- digitalWrite(snelheidrelaisB, HIGH); // set off
- digitalWrite(vooruit, HIGH); // v/a
- digitalWrite(achteruit, LOW); // v/a
- lcdlijn1 = "3 >2< 1 0 1 2 3";
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- case -1:
- digitalWrite(snelheidrelaisA, HIGH); // set off
- digitalWrite(snelheidrelaisB, LOW); // set off
- digitalWrite(vooruit, HIGH); // v/a
- digitalWrite(achteruit, LOW); // v/a
- lcdlijn1 = "3 2 >1< 0 1 2 3" ;
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- case 0:
- digitalWrite(snelheidrelaisA, HIGH); // set off
- digitalWrite(snelheidrelaisB, HIGH); // set off
- digitalWrite(vooruit, HIGH); // v/a
- digitalWrite(achteruit, HIGH); // v/a
- lcdlijn1 = "3 2 1 >0< 1 2 3" ;
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- case 1:
- digitalWrite(snelheidrelaisA, HIGH); // set off
- digitalWrite(snelheidrelaisB, LOW); // set off
- digitalWrite(vooruit, LOW); // v/a
- digitalWrite(achteruit, HIGH); // v/a
- lcdlijn1 = "3 2 1 0 >1< 2 3" ;
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- case 2:
- digitalWrite(snelheidrelaisA, LOW); // set off
- digitalWrite(snelheidrelaisB, HIGH); // set off
- digitalWrite(vooruit, LOW); // v/a
- digitalWrite(achteruit, HIGH); // v/a
- lcdlijn1 = "3 2 1 0 1 >2< 3" ;
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- case 3:
- digitalWrite(snelheidrelaisA, LOW); // set off
- digitalWrite(snelheidrelaisB, LOW); // set off
- digitalWrite(vooruit, LOW); // v/a
- digitalWrite(achteruit, HIGH); // v/a
- lcdlijn1 = "3 2 1 0 1 2 >3<" ;
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- default:
- // if nothing else matches, do the default
- digitalWrite(snelheidrelaisA, HIGH); // set off
- digitalWrite(snelheidrelaisB, HIGH); // set off
- digitalWrite(vooruit, HIGH); // v/a
- digitalWrite(achteruit, HIGH); // v/a
- lcdlijn1 = " error stand" ;
- lcd.home();
- lcd.print(lcdlijn1);
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement