Skocz do zawartości

Problem z zadeklarowaniem pinu jako input_pullup / Arduino UNO


Januszxd

Pomocna odpowiedź

Cześć, pisałem kod do mojej stacji pogodowej i chciałem jeden z pinów zadeklarować jako przycisk poprzez wpisanie na początku programu pinMode(9, INPUT_PULLUP);. Po skompilowaniu programu wyskakuje komunikat:

Cytat

Arduino:1.8.15 (Windows Store 1.8.49.0) (Windows 10), Płytka:"Arduino Uno"











Stacja_Pogodowa_PROTOTYP:4:9: error: expected constructor, destructor, or type conversion before '(' token
 pinMode (9, INPUT_PULLUP);
         ^
exit status 1
expected constructor, destructor, or type conversion before '(' token


Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
 

#include <Wire.h>                      // od magistrali i2c
#include "rgb_lcd.h"                   // wyswietlacz od GROVE

pinMode (9, INPUT_PULLUP);             // tu jest problem, bez tej linijki program chodzi prawidłowo

rgb_lcd lcd;

const int colorR = 255;
const int colorG = 0;
const int colorB = 0;



unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzas = 0;
unsigned long roznicaCzasu = 0;       // zmienne od funkcji millis()

#include <DHT.h>
DHT dht;                              // do czujnika DHT 

#include <Arduino.h>
#include <TM1637Display.h>
#include <virtuabotixRTC.h>          

#define CLK 2
#define DIO 3

virtuabotixRTC myRTC(7, 6, 5);
TM1637Display clock(CLK, DIO);

int minutes;
int hours;                          // wyswietlacz 7seg i moduł RTC

#include "DFRobot_BMP388_I2C.h"
#include "DFRobot_BMP388.h"
#include "Wire.h"
#include "SPI.h"
#include "bmp3_defs.h"

DFRobot_BMP388_I2C bmp388;        // czujnik cisnienia i wyskosci BMP388



void setup() {

Serial.begin(9600);                // rozpoczecie komunikacji 

clock.setBrightness(0x0f);        
myRTC.updateTime();

dht.setup(8);

 lcd.begin(16, 2);
 lcd.setRGB(colorR, colorG, colorB);  

  bmp388.set_iic_addr(BMP3_I2C_ADDR_SEC);

  while(bmp388.begin()){
    Serial.println("ERROR");
    delay(1000);                                                
  }
}

void loop() {
int wilgotnosc = dht.getHumidity();
int temperatura = dht.getTemperature();  

float Cisnienie = bmp388.readPressure();  
 
 myRTC.updateTime();
  if (myRTC.minutes!=minutes){
    
  clock.showNumberDecEx((int)myRTC.hours/10*1000+(myRTC.hours-((int)myRTC.hours/10)*10)*100+ (int)myRTC.minutes/10*10+myRTC.minutes-((int)myRTC.minutes/10)*10, (0x80 >> 1), true); 

  minutes=myRTC.minutes;
  hours=myRTC.hours;       // do wyswietlenia godziny na wyswietlaczu TM1637 z RTC z dwukropkiem
  }
   

  aktualnyCzas = millis();
 roznicaCzasu = aktualnyCzas - zapamietanyCzas;  // funkcje do wykorzystania millis() bez koniecznosci stopowania programu
 
 if (roznicaCzasu >= 5000UL) {
  zapamietanyCzas = aktualnyCzas;
  lcd.setCursor(0, 0);
  lcd.print("wilgotnosc:");
  lcd.print(wilgotnosc);
  lcd.print("%");

 lcd.setCursor(0, 1);
  lcd.print("temperatura:");
  lcd.print(temperatura);
  lcd.print("*C");                            // wyswietlanie danych od temperaturze i wilgotnosci na LCD



 Serial.print("Cisnienie : ");
  Serial.print(Cisnienie);
  Serial.println(" Pa");
  
 }
}

Ja dopiero zaczynam się uczyć o Arduino i nie za bardzo wiem co jest nie tak tutaj dlatego proszę o wyrozumiałość😅. Bez tej linijki pinMode(9, INPUT_PULLUP); program działa prawidłowo. 

Link do komentarza
Share on other sites

@Januszxd witam serdecznie 🙂 

Po pierwsze ze względów estetycznych wyrzuć spację:

pinMode(9, INPUT_PULLUP);  

Po drugie używasz pinMode poza wywołaniami funkcji, nie można tak zrobić. To miejsce jest dla zmiennych, stałych, definicji i deklaracji funkcji. Najlepiej umieść to w bloku setup() {}

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.