Přepínač x LCD displej
Přepínač x LCD displej
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
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
Re: Přepínač x LCD displej
Asi by to chtělo zdroják.
Re: Přepínač x LCD displej
lama dotaz - kdyz to prepnes, smazes ten lcd display?
Re: Přepínač x LCD displej
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);
}
}
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);
}
}
-
- 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
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é..
![Wink ;)](./images/smilies/icon_e_wink.gif)
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é..
- SkullKeep
- Příspěvky: 291
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Přepínač x LCD displej
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 Evil :twisted:](./images/smilies/icon_twisted.gif)
![Question :?:](./images/smilies/icon_question.gif)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Geek :geek:](./images/smilies/icon_e_geek.gif)
-
- 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
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);
}
}
Re: Přepínač x LCD displej
Děkuji moc, už to klape
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 33 hostů