Přepínač x LCD displej

Odpovědět
PeNav
Příspěvky: 3
Registrován: 11 zář 2018, 12:07
Reputation: 0

Přepínač x LCD displej

Příspěvek od PeNav » 11 zář 2018, 12:18

Dobrý den,

asi budu nazván lamou, ale bojuji s otočným přepínačem a funkcemi. Mám tři funkce
1, poloha 1. - LCD píše "Něco"
2, poloha 2. - ohmmetr ( klasický analogový vstup)
3, poloha 3. - měření TC s max6675

Problém, je, když už se mi podaří naprogromovat všechny funkce, tak se mi na LCD displeji všechny překrývají.

Děkuji za radu

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Přepínač x LCD displej

Příspěvek od ohruska » 11 zář 2018, 12:51

Asi by to chtělo zdroják.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Přepínač x LCD displej

Příspěvek od gilhad » 11 zář 2018, 13:46

lama dotaz - kdyz to prepnes, smazes ten lcd display?

PeNav
Příspěvky: 3
Registrován: 11 zář 2018, 12:07
Reputation: 0

Re: Přepínač x LCD displej

Příspěvek od PeNav » 12 zář 2018, 18:32

Nechtěl jsem se dostat, do situace, kdy budu číst, že jsem idiot, jen se snažím naučit. Je to slátanina, chtěl bych vědět, jestli to pujde dát nějak dohromady, pokoušel jsem se na netu hledat podobné řešení, ale nikde nic

Zdroj:

//LCD Nastavení PINŮ
#include <Wire.h>
#include<LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7

#include <max6675.h>
//Nastavení pinů MAX6675
int pinSO = 13;
int pinCS = 12;
int pinSCK = 11;
MAX6675 termoclanek(pinSCK, pinCS, pinSO);
// Ohm Metr
float v1, Rtest, Rrefer = 100;
float v2, current;
float v3, power;



int System1 = 9;
int System2 = 10;
int System3 = 11;

// LCD
uint8_t degree[8] = {140,146,146,140,128,128,128,128};
int TC;
int Mold;
int Cable;

void setup()
{
Serial.begin(9600);

//Přepnutí Funkce
pinMode(System1,INPUT_PULLUP);
pinMode(System2,INPUT_PULLUP);
pinMode(System3,INPUT_PULLUP);





}

void loop()

{



///////////////////-System1-/////////////////////
if (digitalRead(System1))
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Cable");
}



///////////////////-System2-/////////////////////

if (digitalRead(System2))

{
{
lcd.clear();
lcd.begin(16, 2);

lcd.print("Mold");
}

{

v1 = analogRead(A0);
v1 = v1 * (5.0 / 1023.0);
Rtest = (5 - v1) * Rrefer / v1;
v2 = (400 / Rtest);
v3 = v2 * 400;


lcd.setCursor(8, 0);

lcd.print(Rtest);
lcd.print("ohm");
delay(1000);
}

}






///////////////////-System3-/////////////////////


if (digitalRead(System3)){


lcd.clear();
lcd.setCursor(0,1);
lcd.print(termoclanek.readCelsius());
#if ARDUINO >= 100
lcd.write((byte)0);
#else
lcd.print(0, BYTE);
#endif
lcd.print("C ");
lcd.print(termoclanek.readFahrenheit());
#if ARDUINO >= 100
lcd.write((byte)0);
#else
lcd.print(0, BYTE);
#endif
lcd.print('F');

delay(1000);
}
}

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Přepínač x LCD displej

Příspěvek od martinius96 » 12 zář 2018, 20:20

Je jasné, kde je chyba ;)
Všetky vstupy máš na pullup, to znamená, že sú v normálovom zapojení na 5V (HIGH) interne a aby sa vykonala zmena stavu, musíš priviesť GND, aby sa načítala hodnota 0V (GND).
Nakoľko máš stále všetky vstupy na pullupe, všetky if podmienky sa vykonávajú v každej slučke, preto ti to skáče jedno cez druhé..

Uživatelský avatar
SkullKeep
Příspěvky: 290
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Přepínač x LCD displej

Příspěvek od SkullKeep » 12 zář 2018, 20:23

Jak to studuju tak tak nikde nevidím negaci ostatních vstupů a podle mne chybí u podmínky vykřičník jako negace čtení vstupu.
:twisted: :?: :arrow: :geek: P. Q. M.

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Přepínač x LCD displej

Příspěvek od martinius96 » 12 zář 2018, 20:44

Opačná logika podmienok:

Kód: Vybrat vše

#include <Wire.h>
#include<LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7

#include <max6675.h>
//Nastavení pinů MAX6675
int pinSO = 13;
int pinCS = 12;
int pinSCK = 11;
MAX6675 termoclanek(pinSCK, pinCS, pinSO);
// Ohm Metr
float v1, Rtest, Rrefer = 100;
float v2, current;
float v3, power;



int System1 = 9;
int System2 = 10;
int System3 = 11;

// LCD
uint8_t degree[8] = {140,146,146,140,128,128,128,128};
int TC;
int Mold;
int Cable;

void setup()
{
Serial.begin(9600);

//Přepnutí Funkce
pinMode(System1,INPUT_PULLUP);
pinMode(System2,INPUT_PULLUP);
pinMode(System3,INPUT_PULLUP);





}

void loop()

{



///////////////////-System1-/////////////////////
if (!digitalRead(System1))
{ 
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Cable");
}



///////////////////-System2-/////////////////////

if (!digitalRead(System2))

{
{ 
lcd.clear();
lcd.begin(16, 2);

lcd.print("Mold");
}

{

v1 = analogRead(A0);
v1 = v1 * (5.0 / 1023.0);
Rtest = (5 - v1) * Rrefer / v1;
v2 = (400 / Rtest);
v3 = v2 * 400;


lcd.setCursor(8, 0);

lcd.print(Rtest);
lcd.print("ohm");
delay(1000);
}

}






///////////////////-System3-/////////////////////


if (!digitalRead(System3)){ 


lcd.clear();
lcd.setCursor(0,1);
lcd.print(termoclanek.readCelsius());
#if ARDUINO >= 100
lcd.write((byte)0);
#else
lcd.print(0, BYTE);
#endif
lcd.print("C ");
lcd.print(termoclanek.readFahrenheit());
#if ARDUINO >= 100
lcd.write((byte)0);
#else
lcd.print(0, BYTE);
#endif
lcd.print('F');

delay(1000);
}
}

PeNav
Příspěvky: 3
Registrován: 11 zář 2018, 12:07
Reputation: 0

Re: Přepínač x LCD displej

Příspěvek od PeNav » 13 zář 2018, 16:49

Děkuji moc, už to klape

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů