int naar 1 decimaal getal hoe?

Arduino specifieke Software
Gebruikers-avatar
Berichten: 18
Geregistreerd: 09 Mrt 2017, 13:51

int naar 1 decimaal getal hoe?

Berichtdoor edensan » 11 Dec 2017, 00:35

Hallo allemaal,
ik heb een flessenvul project opgesnort op inet
stel het aantal centiliters invia druktoetsen op lcdshield en druk start arduino zet relais open en pomp wordt voor bepaalde tijd gestart.
werkt met lcd shield en werkt goed na wat aanpassingen.
nu zou ik het mooi vinden als ik dat in kan stellen met 1 getal achter de komma
heb al gekeken bij float sprint etc etc maar kom er niet uit..
Code: Alles selecteren
/*========================================================================== 
  Author              : Fahmi Ghani
  Project       : Test Peristaltic pump
  Date                : 20 Sept 2014 
  Video     :https://www.youtube.com/watch?v=GdTUIwj5ros
  Hardware    : Arduino Uno, LCD keypad shield. ULN2003(for switching motor)
==========================================================================*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7); 

int keypad_pin = A0;
int Keypad_value = 0;
int Keypad_value_old = 0;

char Btn_push;

int Pump1 = 1;
int volume = 10;
int volumeOld = 10;

int Pump1State =0;

int MenuPage =1;
int MenuPageOld =1;

long previousMillis = 0; 
unsigned long currentMillis ;
long interval = 1000;
unsigned long multiplier = 1000; //value to change based on calibration
//multiplier = milliseconds needed to fill 1cl liquid



void setup()
{
   lcd.begin(16,2);  //Initialize a 2x16 type LCD
  pinMode(Pump1, OUTPUT); 
  pinMode(10, OUTPUT); 
analogWrite(10,50);
        lcd.print("  Flesvuller");
        lcd.setCursor(0,1);
        lcd.print("   versie 1.0");
       
        delay(5000);
 lcd.clear();

        MenuDisplay(MenuPage);
       
        analogWrite(10,50);
        delay(1000);       
}
void loop()
{
    Btn_push = ReadKeypad();
   
    //Change menu
    if(Btn_push == 'L') MenuPage =1;
    if(Btn_push == 'R') MenuPage =2;
   
    if(MenuPage != MenuPageOld)
    {
        MenuDisplay(MenuPage);
        MenuPageOld = MenuPage;
    }

    if(MenuPage ==1)
    {
        if(Btn_push == 'U' && volume <100)
          volume+=0.1;

        if(Btn_push == 'D'&& volume>0)
          volume-=0.1;
       
        if(volumeOld != volume)//update lcd when got new volume
        {
          lcd.setCursor(2,1);
          lcd.print(volume);
         
          lcd.print("    Cl");
            volumeOld = volume;
        }
       
        if(Btn_push == 'S' )
        {
            RunPump(volume);
           
            MenuDisplay();
           
        }
    }
    if(MenuPage ==2)
    {
       if(Btn_push == 'S')
       {
           if(!Pump1State )
           {
             digitalWrite(Pump1,1);
             lcd.setCursor(0,1);
             lcd.print("Pomp draaid");
             Pump1State =1;
           }
           else
           {       
             digitalWrite(Pump1,0);
             lcd.setCursor(0,1);
             lcd.print("Pomp Stop");
             Pump1State =0;
           }
           delay(100);
       }
       
    }

    delay(200);
 
}//--------------- End of loop() loop ---------------------
void MenuDisplay(int page)
{
    switch (page)
    {
       case 1:
          lcd.clear();
          lcd.print("Volume:");
         
          lcd.setCursor(2,1);
          lcd.print(volume);
         
          lcd.print("    Cl");
          break;
       case 2:
          lcd.clear();
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Spoelen");
         break;
    }
 
}

void RunPump(unsigned long Cl)
{
    previousMillis = millis();
    currentMillis = previousMillis;
   
    interval = Cl *multiplier;
   
    digitalWrite(Pump1,1);
   
        lcd.setCursor(2,1);
        lcd.print("    Cl");
       
    while( < interval)
    {
        currentMillis = millis();
        lcd.setCursor(0, 1);
        lcd.print(()/1000);
    }
        lcd.setCursor(0, 1);
        lcd.print(()/1000);
   
    digitalWrite(Pump1,0);
    delay(1000);
}

char ReadKeypad()
{
  /* Keypad button analog Value
  no button pressed 1023
  select  741
  left    503
  down    326
  up      142
  right   0
  */
  Keypad_value = analogRead(keypad_pin);
 
  if(Keypad_value < 100)
    return 'R';
  else if(Keypad_value < 200)
    return 'U';
  else if(Keypad_value < 400)
    return 'D';
  else if(Keypad_value < 600)
    return 'L';
  else if(Keypad_value < 800)
    return 'S';
  else
    return 0;
 
}


erg bedankt voor meedenken alvast
gr Edwin

Advertisement

Gebruikers-avatar
Berichten: 4645
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: int naar 1 decimaal getal hoe?

Berichtdoor nicoverduin » 11 Dec 2017, 06:53

Dan moet je van voluem en oldvolume een float maken. Nu staat er een int
Docent Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 18
Geregistreerd: 09 Mrt 2017, 13:51

Re: int naar 1 decimaal getal hoe?

Berichtdoor edensan » 11 Dec 2017, 08:51

Kga er mee aan de slag thx

Gebruikers-avatar
Berichten: 18
Geregistreerd: 09 Mrt 2017, 13:51

Re: int naar 1 decimaal getal hoe?

Berichtdoor edensan » 11 Dec 2017, 11:50

Super bedankt werkt mooi
soms denk ik te moeilijk .... :roll:

Gebruikers-avatar
Berichten: 4645
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: int naar 1 decimaal getal hoe?

Berichtdoor nicoverduin » 11 Dec 2017, 12:38

edensan schreef:Super bedankt werkt mooi
soms denk ik te moeilijk .... :roll:
Nee hoor.... Je slaat allerlei tutorials kennelijk over en ga je basiskennis/ervaring ontberen.....
Docent Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten