De reset button zit erin, en ook deze werkt :D,
if (digitalRead(ZeroXbutton) == HIGH)
{
Xpulses = 0;
}
Ga nu eens kijken hoe ik een vermenigvuldigings factor kan in bouwen zodat ik van Pulses naar mm's kom, ook nog afronden op 2 cijfers na de comma.
// *************************************************************************************
// *************--------------Sjuul's Digital Read out system------------***************
// *************************************************************************************
// ------- Aanroep & Aanmaak diverse -------------
#include <Wire.h> //Toevoegen van I2C bibliotheek
#include <LiquidCrystal_I2C.h> //Toevoegen van LCD bibliotheek
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //Instellen LCD adres voor de bus
int Xpulses; //Aanmaken van -Xpulses- als integer
int vorige_Xpulses; //Aanmaken van -vorige_Xpulses- als integer
int A_SIG=0; //Aanmaken van -A_SIG=0- als integer
int B_SIG=1; //Aanmaken van -B_SIG=1- als integer
int ZeroXbutton = 53; //Aanmaken van -ZeroXbutton- als integer en toekennen aan Pin53
float Xmm; //Aanmaken van -Xmm- als float
float Ymm; //Aanmaken van -Ymm- als float
float Zmm; //Aanmaken van -Zmm- als float
void setup() //Begin van initialisatie en opstart (eenmalige doorloop bij opstart)
{
{
attachInterrupt(0, A_RISE, RISING); //Aangeven dat op pin0 een ineruptpin is en dat deze A_RISE heet en moet schakelen op stijgende flank
attachInterrupt(1, B_RISE, RISING); //Aangeven dat op pin1 een ineruptpin is en dat deze B_RISE heet en moet schakelen op stijgende flank
pinMode(ZeroXbutton, INPUT); //Aangeven dat ZeroXbutton een ingang is
Serial.begin(115200); //instellen baudrate
lcd.begin(20,4); //aantal karakters en regels declareren van het LCD scherm
}
{
// ------- 3x knipperen backlight -------------
for(int i = 0; i< 3; i++) //Het volgende stukje code i keer doorlopen, tot i gelijk is aan 3, beginnen bij o en na elke doorloop één bij i optellen
{
lcd.backlight(); //lcd backlight aan
delay(100); //100ms wachten
lcd.noBacklight(); //lcd backlight uit
delay(100); //100ms wachten
}
lcd.backlight(); //lcd backlight aan
//-------- Welkomst boodschap ------------------
lcd.setCursor(0,0); //Plaats cursor op karakter 0 op regel 0
lcd.print("********************"); //Schrijf (vanaf karakter 0 op regel 0) ********************
lcd.setCursor(0,1); //Plaats cursor op karakter 0 op regel 1
lcd.print("* *"); //Schrijf (vanaf karakter 0 op regel 1) * *
lcd.setCursor(0,2); //Plaats cursor op karakter 0 op regel 2
lcd.print("* *"); //Schrijf (vanaf karakter 0 op regel 2) * *
lcd.setCursor(0,3); //Plaats cursor op karakter 0 op regel 3
lcd.print("********************"); //Schrijf (vanaf karakter 0 op regel 3) ********************
delay(500); //500ms wachten
lcd.setCursor(4,1); //Plaats cursor op karakter 4 op regel 1
lcd.print("Sjuul's DRO"); //Schrijf (vanaf karakter 4 op regel 1) Sjuul's DRO
lcd.setCursor(2,2); //Plaats cursor op karakter 2 op regel 2
lcd.print("Mini Mill ZX7016"); //Schrijf (vanaf karakter 2 op regel 2) Mini Mill ZX7016
delay(4000); //4000ms wachten
//-------- Template ------------------
lcd.clear(); //Wis scherm
lcd.setCursor(0,0); //Plaats cursor op karakter 0 op regel 0
lcd.print("X: mm "); //Schrijf (vanaf karakter 0 op regel 0) X: mm
delay(100); //100ms wachten
lcd.setCursor(0,1); //Plaats cursor op karakter 0 op regel 1
lcd.print("Y: mm "); //Schrijf (vanaf karakter 0 op regel 1) Y: mm
delay(100); //100ms wachten
lcd.setCursor(0,2); //Plaats cursor op karakter 0 op regel 2
lcd.print("Z: mm "); //Schrijf (vanaf karakter 0 op regel 2) Z: mm
delay(100); //100ms wachten
lcd.setCursor(0,3); //Plaats cursor op karakter 0 op regel 3
lcd.print("n: RPM"); //Schrijf (vanaf karakter 0 op regel 3) n: RPM
}
} //einde setup
//-------- Hoofdprogramma ------------------
void loop() //Hoofd programma, wordt elke cyclus doorlopen moet aanwezig zijn (mag leeg zijn)
{
if (Xpulses != vorige_Xpulses) //ALS -Xpulsen- NIET gelijk is aan -vorige_Xpulses- DAN...
{
SchrijvenX(); //... uitvoeren van de functie schrijven
vorige_Xpulses = Xpulses; //Gewijzigde waarde onthouden
}
{
if (digitalRead(ZeroXbutton) == HIGH) //ALS ZeroXbutton word gedrukt DAN...
{
Xpulses = 0; //... waarde van Xpulses nul geven
}
}
}
//-------- Diverse functies --------------
void SchrijvenX(){ //Functie met de naam SchrijvenX
lcd.setCursor(3,0); //Plaats cursor op karakter 3 op regel 0
lcd.print(" "); //ruimte leegmaken (vanaf karakter 0 op regel 3) dmv deze met spaties te overschrijven
lcd.setCursor(3,0); //Plaats cursor op karakter 3 op regel 0
lcd.print(Xpulses); //aantal pulsen schrijven
}
void A_RISE(){ //Functie met de naam A_Rise
detachInterrupt(0);
A_SIG=1;
if(B_SIG==0)
Xpulses++;//moving forward
if(B_SIG==1)
Xpulses--;//moving reverse
Serial.println(Xpulses);
attachInterrupt(0, A_FALL, FALLING);
}
void A_FALL(){ //Functie met de naam A_FALL
detachInterrupt(0);
A_SIG=0;
if(B_SIG==1)
Xpulses++;//moving forward
if(B_SIG==0)
Xpulses--;//moving reverse
Serial.println(Xpulses);
attachInterrupt(0, A_RISE, RISING);
}
void B_RISE(){ //Functie met de naam B_Rise
detachInterrupt(1);
B_SIG=1;
if(A_SIG==1)
Xpulses++;//moving forward
if(A_SIG==0)
Xpulses--;//moving reverse
Serial.println(Xpulses);
attachInterrupt(1, B_FALL, FALLING);
}
void B_FALL(){ //Functie met de naam B_FALL
detachInterrupt(1);
B_SIG=0;
if(A_SIG==0)
Xpulses++;//moving forward
if(A_SIG==1)
Xpulses--;//moving reverse
Serial.println(Xpulses);
attachInterrupt(1, B_RISE, RISING);
}