• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zmienna ujemna i dodatnia
#1
Question 
Witam.
Mam pytanie czy mógłby mi ktoś podpowiedzieć jak zrobić zmienną którą da się zwiększać i zmniejszać dwoma przyciskami? Będę bardo wdzięczny.
 
Odpowiedź
#2
if (digitalRead(przycisk1)==LOW) ++zmienna;
if (digitalRead(przycisk2)==LOW) --zmienna;
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
(11-08-2018, 21:32)Robson Kerman napisał(a): if (digitalRead(przycisk1)==LOW) ++zmienna;
if (digitalRead(przycisk2)==LOW) --zmienna;

mógłbym jeszcze prosić o kod na stożenie takiej zmiennej? Gdyż mam taki sam, ale nie idzie mi stworzyć odpowiedniej zmiennej.Jeszcze mam jedno pytanie jak taką zmienną umieścić na ekranie
 
Odpowiedź
#4
int zmienna;
"Jeszcze mam jedno pytanie jak taką zmienną umieścić na ekranie" Ekranie czego terminala, wyświetlacza?
 
Odpowiedź
#5
(11-08-2018, 21:56)-adamek napisał(a): int  zmienna;
"Jeszcze mam jedno pytanie jak taką zmienną umieścić na ekranie" Ekranie czego terminala, wyświetlacza?

Chodzi mi o wyświetlacz/ekranik 16x2. Wiem że int to zmienna ale w programie wyświetla mi się ,, zmienna was not declared in this scope ''
 
Odpowiedź
#6
To pokaż program , nie zadeklarowana
 
Odpowiedź
#7
(11-08-2018, 22:06)-adamek napisał(a): To pokaż program , nie zadeklarowana

program jest mocno pokręcony i nie dokończony ale spoko
Kod:
    const int przyciskD1 = A5;
    const int przyciskD2 = A3;
    const int przyciskA1 = A4;
    const int przyciskA2 = A2;
byte gora[8] = {
  0b00100,
  0b01110,
  0b11111,
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b00100
};

byte dol[8] = {
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b11111,
  0b01110,
  0b00100
};
        #include <LiquidCrystal.h>
        #define ADCPIN 1
        #define ADCPIN2 0
    LiquidCrystal lcd(12,11,5,4,3,2);
  double temperature = 0;            //Initialize variable to hold temperature
  double temperatureg = 0;
void setup()
{
 analogReference(INTERNAL);
  lcd.createChar(1, dol);
  lcd.createChar(0, gora);
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.write(byte(0));
  lcd.setCursor(1,0);
  lcd.print("TEMP");
  lcd.setCursor(0,1);
  lcd.write((byte)1);
  lcd.print("TEMP");
pinMode(przyciskD1,INPUT);
pinMode(przyciskD2,INPUT);
pinMode(przyciskA1,INPUT);
pinMode(przyciskA2,INPUT);
}
void loop()
{
for(int gu = 0 ; gu < 200; ){}
for(int du = 0 ; du < 200; ){}
if(analogRead(przyciskD1)HIGH)
{ ++du;};
if(analogRead(przyciskD2)HIGH)
{ ++gu;};
if(analogRead(przyciskA1)HIGH)
{ --du;};
if(analogRead(przyciskA2)HIGH)
{  --gu;} ;
if(temperature<du)
{digitalWrite(6,LOW)}
if(temperatyreg>gu)
{digitalWrite(6,HIGH)}
  temperature = analogRead(ADCPIN);
  temperatureg = analogRead(ADCPIN2);
  //Calculate Temperature from ADC value
  //Note that we use mV for Vref
  //Vin = ADCresult*Vref/(2^10)
  //Temp(C) = Vin/(10) = ADCresult*Vref/(1024*10)
  temperature = temperature*1100/(1024*10);
  temperatureg = temperature*1100/(1024*10);
  lcd.setCursor(6,0);
  lcd.print(temperatureg);
  lcd.print(int gu );
  lcd.setCursor(6,1);
  lcd.print(temperature);
  delay(1000);
}
 
Odpowiedź
#8
Kod:
   const int przyciskD1 = A5;
   const int przyciskD2 = A3;
   const int przyciskA1 = A4;
   const int przyciskA2 = A2;
byte gora[8] = {
 0b00100,
 0b01110,
 0b11111,
 0b00100,
 0b00100,
 0b00100,
 0b00100,
 0b00100
};

byte dol[8] = {
 0b00100,
 0b00100,
 0b00100,
 0b00100,
 0b00100,
 0b11111,
 0b01110,
 0b00100
};
       #include <LiquidCrystal.h>
       #define ADCPIN 1
       #define ADCPIN2 0
   LiquidCrystal lcd(12,11,5,4,3,2);
 double temperature = 0;            //Initialize variable to hold temperature
 double temperatureg = 0;
 int du,gu;
void setup()
{
analogReference(INTERNAL);
 lcd.createChar(1, dol);
 lcd.createChar(0, gora);
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.write(byte(0));
 lcd.setCursor(1,0);
 lcd.print("TEMP");
 lcd.setCursor(0,1);
 lcd.write((byte)1);
 lcd.print("TEMP");
pinMode(przyciskD1,INPUT);
pinMode(przyciskD2,INPUT);
pinMode(przyciskA1,INPUT);
pinMode(przyciskA2,INPUT);
}
void loop()
{
for(int gu = 0 ; gu < 200; ){}
for(int du = 0 ; du < 200; ){}
if(analogRead(przyciskD1)==HIGH)
{ ++du;};
if(analogRead(przyciskD2)==HIGH)
{ ++gu;};
if(analogRead(przyciskA1)==HIGH)
{ --du;};
if(analogRead(przyciskA2)==HIGH)
{  --gu;} ;
if(temperature<du)
{digitalWrite(6,LOW);}
if(temperatureg>gu)
{digitalWrite(6,HIGH);}
 temperature = analogRead(ADCPIN);
 temperatureg = analogRead(ADCPIN2);
 //Calculate Temperature from ADC value
 //Note that we use mV for Vref
 //Vin = ADCresult*Vref/(2^10)
 //Temp(C) = Vin/(10) = ADCresult*Vref/(1024*10)
 temperature = temperature*1100/(1024*10);
 temperatureg = temperature*1100/(1024*10);
 lcd.setCursor(6,0);
 lcd.print(temperatureg);
 lcd.print( gu );
 lcd.setCursor(6,1);
 lcd.print(temperature);
 delay(1000);
}
Nie wnikając w działanie kompiluje się
 
Odpowiedź
#9
Takie podejście zaprowadzi Cię na manowce, ilość posiadanych informacji zawsze jest mniejsza niż możliwa do posiadania, ale trzeba to trzymać na przyzwoitym poziomie. Wato poczytać kursy, to forum bo w wielu są linki do książek o C/C++ zupełnie darmowych, tak jak np. ten kurs: https://forbot.pl/blog/kurs-arduino-srod...owac-id936 .
 
Odpowiedź
#10
(11-08-2018, 22:24)-adamek napisał(a):    const int przyciskD1 = A5;
    const int przyciskD2 = A3;
    const int przyciskA1 = A4;
    const int przyciskA2 = A2;
byte gora[8] = {
  0b00100,
  0b01110,
  0b11111,
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b00100
};

byte dol[8] = {
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b00100,
  0b11111,
  0b01110,
  0b00100
};
int up,down;
        #include <LiquidCrystal.h>
        #define ADCPIN 1
        #define ADCPIN2 0
    LiquidCrystal lcd(12,11,5,4,3,2);
  double temperature = 0;            
  double temperatureg = 0;
void setup()
{
 analogReference(INTERNAL);
  lcd.createChar(1, dol);
  lcd.createChar(0, gora);
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.write(byte(0));
  lcd.setCursor(1,0);
  lcd.print("TEMP");
  lcd.setCursor(0,1);
  lcd.write((byte)1);
  lcd.print("TEMP");
pinMode(przyciskD1,INPUT);
pinMode(przyciskD2,INPUT);
pinMode(przyciskA1,INPUT);
pinMode(przyciskA2,INPUT);
}
void loop()
{
for(int up = 0 ; up < 200; ){}
for(int down = 0 ; down < 200; ){}
if(digitalRead(przyciskD1)HIGH)
{ ++down;};
if(digitalRead(przyciskD2)HIGH)
{ ++up;};
if(digitalRead(przyciskA1)HIGH)
{ --down;};
if(digitalRead(przyciskA2)HIGH)
{  --up;} ;
if(temperature<down)
{digitalWrite(6,LOW);
}
if(temperatureg>up);
{digitalWrite(6,HIGH);
}
  temperature = analogRead(ADCPIN);
  temperatureg = analogRead(ADCPIN2);
  temperature = temperature*1100/(1024*10);
  temperatureg = temperature*1100/(1024*10);
  lcd.setCursor(6,0);
  lcd.print(temperatureg);
  lcd.print(up);
  lcd.setCursor(6,1);
  lcd.print(temperature);
  lcd.print(down);
  delay(1000);
}
oto poprawny kod.Macie może pojęcie dlaczego wyskakuje mi błąd kompilacji? 
ps. jest poprawiony na bardziej zrozumiały.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości