van liquid cristal naar oled
15 berichten
• Pagina 2 van 2 • 1, 2
Re: van liquid cristal naar oled
Met de 8x8 gaat het goed!!
nu verder...
- 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 <Arduino.h>
#include <U8x8lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
int keypad_pin = A0;
int Keypad_value = 0;
int Keypad_value_old = 0;
char Btn_push;
int Pump1 = 2;
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 1ml liquid
void setup()
{
u8x8.begin();
u8x8.setFont(u8x8_font_chroma48medium8_r);
pinMode(Pump1, OUTPUT);
pinMode(10, OUTPUT);
u8x8.setCursor(0,15);
u8x8.print("Peristaltic Pump");
u8x8.setCursor(0,30);
u8x8.print("Test");
//
delay(10000);
u8x8.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+=1;
if(Btn_push == 'D'&& volume>0)
volume-=1;
if(volumeOld != volume)//update u8x8 when got new volume
{
u8x8.setCursor(8,0);
u8x8.print(volume);
u8x8.print("ml ");
volumeOld = volume;
}
if(Btn_push == 'S' )
{
RunPump(volume);
MenuDisplay(MenuPage);
}
}
if(MenuPage ==2)
{
if(Btn_push == 'S')
{
if(!Pump1State )
{
digitalWrite(Pump1,1);
u8x8.setCursor(0,1);
u8x8.print("Pump Run ");
Pump1State =1;
}
else
{
digitalWrite(Pump1,0);
u8x8.setCursor(0,1);
u8x8.print("Pump Stop ");
Pump1State =0;
}
delay(100);
}
}
delay(200);
}//--------------- End of loop() loop ---------------------
void MenuDisplay(int page)
{
switch (page)
{
case 1:
u8x8.clear();
u8x8.setCursor(0,0);
u8x8.print("Volume: ");
u8x8.setCursor(8,0);
u8x8.print(volume);
u8x8.print("ml ");
break;
case 2:
u8x8.clear();
u8x8.clear();
u8x8.setCursor(0,0);
u8x8.print("Flush Water");
break;
}
}
void RunPump(unsigned long ml)
{
previousMillis = millis();
currentMillis = previousMillis;
interval = ml *multiplier;
digitalWrite(Pump1,1);
u8x8.setCursor(4,1);
u8x8.print("ml ");
while(currentMillis - previousMillis < interval)
{
currentMillis = millis();
u8x8.setCursor(0, 1);
u8x8.print((currentMillis - previousMillis)/1000);
}
u8x8.setCursor(0, 1);
u8x8.print((currentMillis - previousMillis)/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;
}
nu verder...
Advertisement
Re: van liquid cristal naar oled
Bij Adafruit en U8g2 in de "Full screen buffer mode" is het nodig om de buffer naar het scherm te schrijven.
De U8g2 in 8x8 mode heet de "U8x8" en die gebruikt geen buffer, maar schrijft direct naar het scherm.
De wiki van de U8g2 beschijft dat allemaal: https://github.com/olikraus/u8g2/wiki
Dus als je de functies om de buffer naar scherm te schrijven niet wilt aanroepen, dan is er volgens mij alleen maar de U8x8. De andere modes gebruiken een buffer.
De U8g2 in 8x8 mode heet de "U8x8" en die gebruikt geen buffer, maar schrijft direct naar het scherm.
De wiki van de U8g2 beschijft dat allemaal: https://github.com/olikraus/u8g2/wiki
Dus als je de functies om de buffer naar scherm te schrijven niet wilt aanroepen, dan is er volgens mij alleen maar de U8x8. De andere modes gebruiken een buffer.
Re: van liquid cristal naar oled
Koepel schreef:@baco1978, maar ik zie iets dat totaal anders is.
In die demo zie je volop gebruik van display.display(); terwijl jij dat nergens hebt.
oeps, helemaal overheen gelezen, gelukkig toch nog iemand die een betere blik er op heeft
Met vriendelijke groet Arjan
Re: van liquid cristal naar oled
Ik krijg nu soort splashscherm "peristelic pump test"
Dan ververst het scherm en zie ik "volume 10 ml "
Dat automatisch naar 0 teld dan stop
Ik ga proberen Pushbuttons te installeren (die normaal in het LCD shield zitten)
Stap 1 is gezet...
Dan ververst het scherm en zie ik "volume 10 ml "
Dat automatisch naar 0 teld dan stop
Ik ga proberen Pushbuttons te installeren (die normaal in het LCD shield zitten)
Stap 1 is gezet...
Re: van liquid cristal naar oled
zou het kunnen dat als ik aan een rotary encoder draai ik een vaste waarde krijg? ik ben 5 vaste waardes nodig...
15 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 43 gasten