Ledde bilgiler güncellenmiyor?

egemen

Üye
Katılım
3 Kas 2018
Mesajlar
34
Tepkime puanı
2
Puanları
8
Konum
Burdur
MCP2515 ve i2c lcd ile canbus hattından veri çektim, şu an herşey olması gerektiği gibi çalışıyor, yalnız şöyle bir sorunum var, daha doğrusu eklemek istediğim bir şey. LCD ekran 16x2 ve yetmiyor. Ekranı büyütmek istemiyorum, sayfa eklemek istiyorum. Fotoğraftan görüleceği üzere, can-bus shield'in üzerinde joystick var. "if" kullanarak "printout" kısmını ikiye bölüyorum. Yukarı bastığımda hız ve deviri göster, aşağı bastığımda hararet ve dış sıcaklığı göster şeklinde. Sorun şurada başlıyor, yukarı bastığımda hız ve deviri, aşağı bastığımda hararet ve dış sıcaklığı gösteriyor fakat bilgiler güncellenmiyor. Nasıl düzeltebilirim?

Kodlar:
Kod:
#include <mcp_can.h>
#include <SPI.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 60;
unsigned long previousMillis3 = 120;
unsigned long previousMillis4 = 180;
const long interval = 500;

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
int rpm;
int carspeed;
int hararet;
int dis;
char msgString[128];                       

#define CAN0_INT 2                           
MCP_CAN CAN0(10);   

byte data[8]= {0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
byte data1[8] = {0x02, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00};
byte data2[8]= {0x02, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00};
byte data3[8]= {0x02, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00};
byte data4[8]= {0x02, 0x01, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00};

void setup()

{ lcd.begin(); lcd.print("Initializing.."); delay(1500); lcd.clear(); lcd.display();

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK) lcd.print("Successfull!");
else lcd.print("No Connection!");

CAN0.setMode(MCP_NORMAL); pinMode(CAN0_INT, INPUT); lcd.display(); delay(1500); lcd.clear(); }

void printout()
{ lcd.setCursor(0, 0); lcd.print("RPM:"); lcd.setCursor(5,0); lcd.print(rpm); lcd.print(" ");
lcd.setCursor(0, 1); lcd.print("HIZ:"); lcd.setCursor(5, 1); lcd.print(carspeed); lcd.print("  ");
lcd.setCursor(10, 1); lcd.print("H:"); lcd.setCursor(12, 1); lcd.print(hararet); lcd.print((char)223); lcd.print(" ");
lcd.setCursor(10, 0); lcd.print("S:"); lcd.setCursor(12, 0); lcd.print(dis); lcd.print((char)223); lcd.print(" "); }

void loop()

{ unsigned long currentMillis1 = millis();
unsigned long currentMillis2 = millis();
unsigned long currentMillis3 = millis();
unsigned long currentMillis4 = millis();

if (currentMillis1 - previousMillis1 >= interval) {
    previousMillis1 = currentMillis1;
    byte sndStat1 = CAN0.sendMsgBuf(0x7DF, 0, 8, data1);  }

if (currentMillis2 - previousMillis2 >= interval) {
    previousMillis2 = currentMillis2;
    byte sndStat2 = CAN0.sendMsgBuf(0x7DF, 0, 8, data2);  }

if (currentMillis3 - previousMillis3 >= interval) {
    previousMillis3 = currentMillis3;
    byte sndStat3 = CAN0.sendMsgBuf(0x7DF, 0, 8, data3);  }

if (currentMillis4 - previousMillis4 >= interval) {
    previousMillis4 = currentMillis4;
    byte sndStat4 = CAN0.sendMsgBuf(0x7DF, 0, 8, data4);  }
 

if(!digitalRead(CAN0_INT))   

{ CAN0.readMsgBuf(&rxId, &len, rxBuf);      // Read data: len = data length, buf = data byte(s)
    if(rxId == 0x7E8)  {
      if(rxBuf[1]!= 0x7f){
        switch (rxBuf[2]){
          case 0x0C:
          rpm = ((rxBuf[3] * 256)+ rxBuf[4])/4;
          printout();
          break;
          
          case 0x0D:
          carspeed = rxBuf[3];
          break;
          
          case 0x05:
          hararet = rxBuf[3]-40;
          break;
          
          case 0x46:
          dis = rxBuf[3]-40;
          break;
        }

      }
      else{
        byte sndStat = CAN0.sendMsgBuf(0x7DF, 0, 8, data);
      }
    }
  }
    
}
Joystick kodları: (paylaştığım sketch'de yok, çalışmadığı çin sildim)
Kod:
#define UP A1
#define DOWN A3
#define LEFT A2
#define RIGHT A5
#define CLICK A4

void setup() {

pinMode(UP,INPUT);
pinMode(DOWN,INPUT);

digitalWrite(UP, HIGH);
digitalWrite(DOWN, HIGH);

if (digitalRead(UP) == 0)
{ sayfa1;}

if (digitalRead(DOWN) == 0)
{ sayfa2;}
arduino led guncelleme.jpg
 

ghost

Üye
Katılım
26 Eki 2018
Mesajlar
50
Tepkime puanı
1
Puanları
8
Konum
Iğdır
Hocam bu can bus shield. İle LİN Bus protokolünde veri okuyabiliyormuyuz aracımın direksiyon tuşlarını resistif e çevirmek istiyorum fakat hangi modül ile okutabilirim bu lin bus ı bulamadım
 

egemen

Üye
Katılım
3 Kas 2018
Mesajlar
34
Tepkime puanı
2
Puanları
8
Konum
Burdur
Hocam bu can bus shield. İle LİN Bus protokolünde veri okuyabiliyormuyuz aracımın direksiyon tuşlarını resistif e çevirmek istiyorum fakat hangi modül ile okutabilirim bu lin bus ı bulamadım
lin-bus okuyabiliyor. direksiyon tuslariyla telefon kontrol etmek gibi birkac ornek proje var.
 

fuxest

Üye
Katılım
26 Eki 2018
Mesajlar
33
Tepkime puanı
1
Puanları
8
Konum
Hakkari
Yukarı yada aşağıya joystick basılı tutunca güncelliyor mu?
 

persprensi

Üye
Katılım
1 Kas 2018
Mesajlar
41
Tepkime puanı
1
Puanları
8
Konum
İzmir
sadece rpm'i okuduğunda printout yapıyor, hata burda olabilir mi?
 
Üst