Lek LCD scherm

Technische vragen, tips, trucs, enz.
Gebruikersavatar
Nrbrt
Berichten: 28
Lid geworden op: 27 apr 2019, 10:43
Type Goldwing: GL1800
Locatie: Soest

Re: Lek LCD scherm

Bericht door Nrbrt » 12 mei 2019, 08:07

Ik zat te vertalen en ik vroeg mij af waar de signalen van de radio verwerkt worden. Wat blijkt? Die worden niet verwerkt. De schrijver van het programma blijkt zijn standaard radio niet te gebruiken en heeft een externe radio/mp3 speler ingebouwd en die hij via de versterker van de standaard radio naar de speakers stuurt. Ik heb inmiddels een poging gedaan contact met hem op te nemen. Er is in elk geval wel ruimte op het display op de radio informatie te verwerken en ik heb ook gevonden dat de radio een digitaal signaal uitspuugt die naar het display gestuurd wordt. Het lijkt een serieel communicatie protocol te zijn, maar om hier verder mee te komen zal ik een werkende radio aan mijn logic analyser moeten hangen om uit te vogelen hoe dat protocol in elkaar zit.(Marco?) Dit is dus iets wat ik zelf zal moeten produceren omdat dat geen prioriteit van de originele schrijver van de software zal zijn. Gelukkig heb ik daar ervaring mee en is dit dus geen show-stopper. Wat wel een ding is, is hoe de licentie van de software geregeld gaat worden als ik daaraan ga bijdragen. Op dit moment wordt er geen licentie genoemd, maar omdat er software libraries gebruikt worden die onder de GPLv3 open-source licentie vallen neem ik aan dat dat met zijn software ook het geval zal zijn. Ik zal bij hem het idee neerleggen om dit in elk geval expliciet als open-source onder de GPLv3 licentie te publiceren op github of zo. Wordt vervolgd...
Kawasaki Z 550 GT, Suzuki GSX750E, Honda VF500, Benelli 504 Sport, Kawasaki Vulcan 500, Suzuki GSX-R 750, Honda GL1800

Gebruikersavatar
Nrbrt
Berichten: 28
Lid geworden op: 27 apr 2019, 10:43
Type Goldwing: GL1800
Locatie: Soest

Re: Lek LCD scherm

Bericht door Nrbrt » 15 mei 2019, 07:52

Goed nieuws, het contact met de schrijver is gelegd en hij is bezig met een nieuwe versie die ook de communicatie met de radio gaat doen!
Kawasaki Z 550 GT, Suzuki GSX750E, Honda VF500, Benelli 504 Sport, Kawasaki Vulcan 500, Suzuki GSX-R 750, Honda GL1800

Gebruikersavatar
Nrbrt
Berichten: 28
Lid geworden op: 27 apr 2019, 10:43
Type Goldwing: GL1800
Locatie: Soest

Re: Lek LCD scherm

Bericht door Nrbrt » 16 mei 2019, 09:11

Ik heb de details ontvangen van het communicatie protocol tussen de radio en het display. Ik deel het hier onder even voor de liefhebber.
In het Frans, maar dat mag de pret niet drukken.


Afbeelding
Kawasaki Z 550 GT, Suzuki GSX750E, Honda VF500, Benelli 504 Sport, Kawasaki Vulcan 500, Suzuki GSX-R 750, Honda GL1800

Gebruikersavatar
Nrbrt
Berichten: 28
Lid geworden op: 27 apr 2019, 10:43
Type Goldwing: GL1800
Locatie: Soest

Re: Lek LCD scherm

Bericht door Nrbrt » 17 mei 2019, 08:26

Ik heb alle informatie even bij elkaar gezet op mijn server. De link naar dit materiaal is:

https://nextcloud.lavaleriana.net/s/BEMZabjxjySowF9

Deze informatie zal ik updaten, uitbreiden en van vertalingen voorzien. Er komt een nieuwe versie aan van het programma, die aanzienlijk verschilt van de huidige versie en dus zet ik de vertaalwerkzaamheden qua programmatuur even in de ijskast om geen dubbel werk te hoeven doen. Wat elektronica betreft gaat er ook nog wat veranderen omdat de spanningsregelaar die op dit moment in het schema staat, te gevoelig is voor spanningswisselingen en er daardoor soms wat flikkering in het scherm zit. Dit is allemaal goed op te lossen en daar wordt aan gewerkt.
Kawasaki Z 550 GT, Suzuki GSX750E, Honda VF500, Benelli 504 Sport, Kawasaki Vulcan 500, Suzuki GSX-R 750, Honda GL1800

jbmmaas@gmail.com
Berichten: 2
Lid geworden op: 16 jun 2019, 07:11
Type Goldwing: GL1500

Re: Lek LCD scherm

Bericht door jbmmaas@gmail.com » 16 jun 2019, 07:21

Nieuwe LCD-schermen zijn verkrijgbaar en kunnen worden geplaatst via Ger van GL Parts and Bikes, Romeinenweg 106 in Oss.
Super zaak!

Gebruikersavatar
GlimWas
Berichten: 538
Lid geworden op: 19 apr 2013, 09:38
Type Goldwing: overig
Locatie: Op de NT1100DCT

Re: Lek LCD scherm

Bericht door GlimWas » 14 aug 2019, 16:17

Ik ben zeer benieuwd naar de vorderingen op dit ogenblik? Ik ben van plan de oude dame nog een tijdje te houden en vind dit een leuke 'upgrade' tov het oude scherm, wat nog prima werkt overigens......

Zodra ik de schade heb gerepareerd van de valpartij afgelopen vrijdag ............................
Most motorcycle problems are caused by the nut that connects the handlebar with the seat

Amberdoublesix
Berichten: 2
Lid geworden op: 18 okt 2015, 14:27
Type Goldwing: GL1500

Re: Lek LCD scherm

Bericht door Amberdoublesix » 13 apr 2020, 19:14

Ben benieuwd of het je nog gelukt is om het allemaal in te bouwen en dat het werkt. Mijn schermpje van de goldwing doet nu niets meer. heb de code voor de arduino gezien , maar mijn frans is niet genoeg om het te vertalen.

Gebruikersavatar
cooper
Berichten: 2064
Lid geworden op: 10 aug 2010, 12:53
Type Goldwing: GL1800
Locatie: Stabroek (Belgie)

Re: Lek LCD scherm

Bericht door cooper » 23 apr 2020, 09:03

Zijn er al rijders die deze hebben ingebouwd of laten inbouwen?
Once you ride a Wing, you buy a Wing!
Afbeelding

Gebruikersavatar
biettie
Berichten: 126
Lid geworden op: 26 mar 2011, 22:35
Type Goldwing: GL1500
Locatie: Terneuzen
Contacteer:

Re: Lek LCD scherm

Bericht door biettie » 01 apr 2021, 14:59

Reeds ruim een jaar verder, maar ik ben toch wel geïnteresseerd in de afloop van dit project. Zijn er geen updates meer?

Gebruikersavatar
biettie
Berichten: 126
Lid geworden op: 26 mar 2011, 22:35
Type Goldwing: GL1500
Locatie: Terneuzen
Contacteer:

Re: Lek LCD scherm

Bericht door biettie » 02 apr 2021, 05:36

Ik ga mezelf hier eens in verdiepen. Het topic lijkt een beetje doodgebloed…
Heb al een LCD en Arduino Mega besteld bij Ali en de tekeningen heb ik uitgeprint.

Gebruikersavatar
biettie
Berichten: 126
Lid geworden op: 26 mar 2011, 22:35
Type Goldwing: GL1500
Locatie: Terneuzen
Contacteer:

Re: Lek LCD scherm

Bericht door biettie » 27 mei 2021, 20:42

Zoals gezegd: ik heb me ondertussen verdiept in dit onderwerp en wat materiaal aangeschaft om zelf zo'n scherm te maken. Met Nrbrt heb ik afgesproken dat mijn wing proefobject is en dat ik bij hem kan aankloppen als het even niet lukt.
Ik heb veel andere dingen te doen, dus verwacht niet dat dit op een paar weken klaar is;)
Ik heb gekocht:
LCD module 3,5" TFT LCD inclusief Arduino Mega 2560 13,78 Euro
Nano Controller (Arduino Nano) 3,32 Euro
NEO-6MV2 gps module voor Arduino 3,26 Euro
prototype PCB Board voor Arduino 0,47 Euro
Starter Kit voor Arduino Uno R3 met breadboard 10,44 Euro
Diverse snoertjes en verbinders ongeveer 10 Euro
Alles komt uit China en vergt wel wat geduld, maar voor een iets hogere prijs, kun je een 10-daagse levering kiezen.
De indeling maak ik met het programma wat op de site van Arduino te downloaden is. De programmataal is een afgeleide van C++ en best goed te behappen.
Voor de datum, tijd en snelheid gebruik ik de gps-module. Die geeft de lokale tijd weer en snelheid op basis van satelietgegevens (net als een losse navigatie). Voor de accuspanning is een opstelling met weerstanden genoeg. Voor de schaal van benzine en temperatuur heb ik nu een leuk balkje wat ik van internet heb gehaald, maar ik weet nog niet of het een blijvertje is. In de startkit van de Arduino Uno zitten ook andere onderdelen, zoals de DHT11. De letters staan voor Dewpoint, Humidity en Temperature. In het nederlands, dauwpunt, vochtigheidsgraad en temperatuur. Dauwpunt vind ik niet zo interessant, maar de temperatuur en vochtigheidsgraad staan onderaan op het scherm. De waarde van 4,21B rechtsonder moet vervangen worden door de druk van de achterveer.
In de voorbeelden die je op internet tegenkomt, zie je ook veel dat men de versnelling in het scherm laat zien. Dit vind ikzelf een beetje overbodig en ga ik er ook niet opzetten. De melding van de stopknop en zijstandaard is misschien nog wel handig.


Afbeelding

Gebruikersavatar
biettie
Berichten: 126
Lid geworden op: 26 mar 2011, 22:35
Type Goldwing: GL1500
Locatie: Terneuzen
Contacteer:

Re: Lek LCD scherm

Bericht door biettie » 27 mei 2021, 21:14

Dit is mijn programma tot nu toe. Ik heb contact gehad met iemand die dit ook heeft gemaakt en gevraagd of hij het project wilde delen, maar die wilde het enkel verkopen voor 300 euro. Voor mij genoeg reden om de uitdaging zelf aan te gaan :D. Ik vind het onzin om anderen het wiel steeds maar opnieuw te laten uitvinden of anderen te laten betalen voor iets wat je zelf uit hobby doet. Bovendien is het alleen maar makkelijker om te delen en zo met meerdere mensen het project te doen. Ieder heeft wel een unieke blik op dingen, toch?

Code: Selecteer alles

#define RED2RED     0
#define GREEN2GREEN 1
#define BLUE2BLUE   2
#define BLUE2RED    3
#define GREEN2RED   4
#define RED2GREEN   5
#define RAINBOW     6


#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

#include <SPI.h>          // f.k. for Arduino-1.5.2
#include "Adafruit_GFX.h"// Hardware-specific library
#include <FreeSevenSegNumFontPlusPlus.h>
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <DHT.h>;
#include <SoftwareSerial.h>
#include <TinyGPS.h>
SoftwareSerial mySerial(50, 51 );
TinyGPS gps;
void gpsdump(TinyGPS &gps);
void printFloat(double f, int digits = 2);

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

#define DHTPIN 31
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// Assign human-readable names to some common 16-bit color values:
#define BLACK 0x0000
#define NAVY 0x000F
#define DARKGREEN 0x03E0
#define DARKCYAN 0x03EF
#define MAROON 0x7800
#define PURPLE 0x780F
#define OLIVE 0x7BE0
#define LIGHTGREY 0xC618
#define DARKGREY 0x7BEF
#define BLUE 0x001F
#define GREEN 0x07E0
#define CYAN 0x07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ORANGE 0xFD20
#define GREENYELLOW 0xAFE5

int benzine    = A6;
float power    = A8;
int aantalBalk = 30;
float deel     = 1023/aantalBalk;
int reading;      //meter
float Stroom;     //voltmeter


void setup(void) {
  pinMode(benzine, INPUT);
  pinMode(power, INPUT);
  Serial.begin(9600);
  mySerial.begin(9600);
  dht.begin();
  
  uint16_t ID = 0x9488; 
  tft.begin(ID);
  tft.setRotation(2);
  tft.fillScreen(BLACK);

  
  drawHomeScreen();   // Draws the Home Screen
}
void drawHomeScreen() {
  //Draadframe LCD
  tft.drawRect(0,0,320, 480, DARKCYAN);
  tft.drawFastHLine(0,  75, 320, DARKCYAN);        //Eerste horizontale lijn
  tft.drawFastHLine(0, 135, 320, DARKCYAN);        //Tweede horizontale lijn
  tft.drawFastHLine(0, 200, 320, DARKCYAN);        //Derde horizontale lijn
  tft.drawFastHLine(0, 350, 320, DARKCYAN);        //Vierde horizontale lijn
  tft.drawFastHLine(0, 440, 320, DARKCYAN);        //Onderste horizontale lijn

  tft.drawFastVLine(260,  0,  75, DARKCYAN);       //Eerste verticale lijn
  tft.drawFastVLine(160, 75, 125, DARKCYAN);       //Tweede verticale lijn
  
  //benzinetank en schaal tekenen
  tft.drawRect (30, 400, 12,  25, DARKCYAN);
  tft.drawRect (31, 401, 10,  13, DARKCYAN);
  tft.fillRect (30, 412, 12,  13, DARKCYAN);
  tft.drawLine (44, 407, 44, 424, DARKCYAN);
  tft.drawLine (45, 407, 45, 424, DARKCYAN);
  tft.drawLine (42, 405, 42, 408, DARKCYAN);
  tft.drawLine (43, 405, 43, 408, DARKCYAN);
  //schaal
  tft.drawLine ( 66, 428, (66+(aantalBalk*8)), 428, WHITE);
  tft.drawLine ( 66, 428,  66, 432, WHITE);
  tft.drawLine (126, 428, 126, 432, WHITE);
  tft.drawLine (186, 428, 186, 432, WHITE);
  tft.drawLine (246, 428, 246, 432, WHITE);
  tft.drawLine (306, 428, 306, 432, WHITE);

  //Oliepot en schaal tekenen
  tft.drawLine (27, 380, 43, 380, DARKCYAN);
  tft.drawLine (27, 381, 43, 381, DARKCYAN);
  tft.drawLine (27, 380, 27, 370, DARKCYAN);
  tft.drawLine (28, 380, 28, 370, DARKCYAN);
  tft.drawLine (27, 380, 19, 372, DARKCYAN);
  tft.drawLine (19, 372, 23, 368, DARKCYAN);
  tft.drawLine (23, 368, 28, 370, DARKCYAN);
  tft.drawLine (28, 370, 46, 370, DARKCYAN);
  tft.drawLine (28, 371, 46, 371, DARKCYAN);
  tft.drawLine (46, 371, 53, 367, DARKCYAN);
  tft.drawLine (43, 380, 53, 370, DARKCYAN);
  tft.drawLine (43, 381, 53, 371, DARKCYAN);
  tft.drawLine (53, 371, 55, 373, DARKCYAN);
  tft.drawLine (53, 367, 57, 372, DARKCYAN);
  tft.drawLine (57, 372, 55, 373, DARKCYAN);
  
  
  //schaal
  tft.drawLine (66, 389, (66+(aantalBalk*8)), 389, WHITE);
  tft.drawLine (66, 389, 66, 393, WHITE);
  tft.drawLine (126, 389, 126, 393, WHITE);
  tft.drawLine (186, 389, 186, 393, WHITE);
  tft.drawLine (246, 389, 246, 393, WHITE);
  tft.drawLine (306, 389, 306, 393, WHITE);
} //end drawHomeScreen

void loop(void) {
  reading = analogRead(benzine)/(deel);
  if (reading <= aantalBalk) {
    //(var, xpos, ypos, width, height, widthbetween, colorscheme)
    linearMeter(reading, 61, 360, 5, 25, 3, aantalBalk, BLUE2RED);      
    linearMeter(reading, 61, 400, 5, 25, 3, aantalBalk, GREEN2GREEN);
  } 
  else { reading = aantalBalk;} 
  Stroom = analogRead(power)* 0.01173021;
 tft.setCursor (171,100);
 tft.setTextSize (2);
 tft.print("Accu: ");
 if (Stroom >= 10){
  tft.setTextColor(GREEN, BLACK);
 }else{
  tft.print(" ");
  tft.setTextColor(RED, BLACK);
 }
 tft.print(Stroom,1);
 tft.setTextColor(WHITE);
 tft.print(" V");

 tft.setCursor(15,160);
 tft.print("Trip ");
 tft.print("000");
 tft.print(" Km");

 tft.setCursor(180, 160);
 tft.print("130.000");     //kilometerteller?
 tft.print(" Km");
 // Temp en vochtigheidsmeting

float humi  = dht.readHumidity();
float tempC = dht.readTemperature();
 
tft.setCursor (20,455);
tft.setTextColor(WHITE, BLACK);
tft.setTextSize(2);
tft.print(humi);
tft.print("%");
tft.print("    "); 
tft.print(tempC, 1);
tft.print("C");
tft.print("   "); 
tft.print("4,21B");		//compressor
 //datum
  tft.setCursor (25,10);
  tft.setTextSize(2);
  tft.setTextColor(LIGHTGREY, BLACK);
  tft.print(static_cast<int>(day)); 
  tft.print("-"); 
  tft.print(static_cast<int>(month)); 
  tft.print("-"); 
  tft.print(year);

  tft.setCursor(20, 37);
  tft.setTextSize(4);
  tft.setTextColor(WHITE, BLACK);
  if (static_cast<int>(hour+2) < 10){
    tft.print(" ");
  }
  tft.print(static_cast<int>(hour+2));  
  tft.print(":");
  if (static_cast<int>(minute) < 10){
   tft.print("0");
  } 
  tft.println(static_cast<int>(minute)); 
  
 
  //snelheid
  tft.setTextSize(3);
  tft.setCursor(25, 95);
  int snel = gps.f_speed_kmph();
     if (snel >= 1){
          if (snel < 10){
            tft.print("  ");           
          }
          if(snel > 9 && snel < 100) {
            tft.print(" ");
          }    
      tft.print(snel);
     }else{
      tft.print("   ");
     }
   tft.setFont();
   tft.setCursor(95, 100);
   tft.setTextSize(2);
   tft.print("Km/u");
}
// #########################################################################
//  Draw the linear meter
// #########################################################################
// val =  reading to show (range is 0 to n)
// x, y = position of top left corner
// w, h = width and height of a single bar
// g    = pixel gap to next bar (can be 0)
// n    = number of segments
// s    = colour scheme
void linearMeter(int val, int x, int y, int w, int h, int g, int n, byte s)
{
  // Variable to save "value" text colour from scheme and set default
  int colour = TFT_BLUE;
  // Draw n colour blocks
  for (int b = 1; b <= n; b++) {
    if (val > 0 && b <= val) { // Fill in coloured blocks
      switch (s) {
        case 0: colour = TFT_RED; break; // Fixed colour
        case 1: colour = TFT_GREEN; break; // Fixed colour
        case 2: colour = TFT_BLUE; break; // Fixed colour
        case 3: colour = rainbowColor(map(b, 0, n, 127,   0)); break; // Blue to red
        case 4: colour = rainbowColor(map(b, 0, n,  63,   0)); break; // Green to red
        case 5: colour = rainbowColor(map(b, 0, n,   0,  63)); break; // Red to green
        case 6: colour = rainbowColor(map(b, 0, n,   0, 159)); break; // Rainbow (red to violet)
      }
      tft.fillRect(x + b*(w+g), y, w, h, colour);
    }
    else // Fill in blank segments
    {
      tft.fillRect(x + b*(w+g), y, w, h, TFT_DARKGREY);
    }
  }
}

/***************************************************************************************
** Function name:           rainbowColor
** Description:             Return a 16 bit rainbow colour
***************************************************************************************/
  // If 'spectrum' is in the range 0-159 it is converted to a spectrum colour
  // from 0 = red through to 127 = blue to 159 = violet
  // Extending the range to 0-191 adds a further violet to red band

uint16_t rainbowColor(uint8_t spectrum)
{
  spectrum = spectrum%192;
  
  uint8_t red   = 0; // Red is the top 5 bits of a 16 bit colour spectrum
  uint8_t green = 0; // Green is the middle 6 bits, but only top 5 bits used here
  uint8_t blue  = 0; // Blue is the bottom 5 bits

  uint8_t sector = spectrum >> 5;
  uint8_t amplit = spectrum & 0x1F;

  switch (sector)
  {
    case 0:
      red   = 0x1F;
      green = amplit; // Green ramps up
      blue  = 0;
      break;
    case 1:
      red   = 0x1F - amplit; // Red ramps down
      green = 0x1F;
      blue  = 0;
      break;
    case 2:
      red   = 0;
      green = 0x1F;
      blue  = amplit; // Blue ramps up
      break;
    case 3:
      red   = 0;
      green = 0x1F - amplit; // Green ramps down
      blue  = 0x1F;
      break;
    case 4:
      red   = amplit; // Red ramps up
      green = 0;
      blue  = 0x1F;
      break;
    case 5:
      red   = 0x1F;
      green = 0;
      blue  = 0x1F - amplit; // Blue ramps down
      break;
  }

  return red << 11 | green << 6 | blue;
}

Gebruikersavatar
RonalT
Berichten: 13419
Lid geworden op: 11 okt 2007, 09:45
Type Goldwing: GL1800
Locatie: Dinteloord

Re: Lek LCD scherm

Bericht door RonalT » 27 mei 2021, 23:38

Helemaal mee eens. Ik ben vorig jaar ook met een Arduino aan de gang gegaan om er een soort teller-toestand mee te bouwen. Als iemand dat wil hebben, prima. Krijgt hij/zij.
Ik zal eens kijken wat ik er van snap. Jammer genoeg heb ik niet zo'n display.... anders zette ik het in gang. Arduino's heb ik hier nog liggen.
Groeten, RonalT


Kijk in de evenementen kalender wat er dan te doen is

And there is no better teacher than experience (Christain Horner)

Gebruikersavatar
biettie
Berichten: 126
Lid geworden op: 26 mar 2011, 22:35
Type Goldwing: GL1500
Locatie: Terneuzen
Contacteer:

Re: Lek LCD scherm

Bericht door biettie » 28 mei 2021, 17:53

Ach, voor €10 op Ali heb je een scherm plús een arduinobordje. Dan is er niet echt een man overboord als het niet lukt, toch?

Gebruikersavatar
Django07
Berichten: 24
Lid geworden op: 07 okt 2006, 19:27
Type Goldwing: GL1500
Locatie: Moerbeke-Waas Belgie

Re: Lek LCD scherm

Bericht door Django07 » 06 aug 2021, 12:46

Zijn er verder nog ontwikkelingen te melden ??
Ik ben ook kandidaat voor zo een Arduino systeem aan te kopen.
Indien er verder niet meer aan deze topic gewerkt zou worden dan moet ik mij uiteindelijk toch een compleet nieuw LCD scherm bestellen.
Ik hoor het wel.
Grts-Willy

Plaats reactie