UTFT externe fonts

IDE gerelateerde berichten
Berichten: 30
Geregistreerd: 22 Jun 2013, 00:04

UTFT externe fonts

Berichtdoor Duiker » 01 Sep 2015, 21:36

Wederom heb ik een probleem met het overgaan naar IDE 1.6.5.
De file Sinclair_M.c staat bij de scetch.
Onderstaande code geeft de foutmelding:
Code: Alles selecteren
conflicting declaration 'uint8_t Sinclair_M []



Code: Alles selecteren
// UTFT_ViewFont
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// This program is a demo of the included fonts.
//
// This demo was made for modules with a screen resolution
// of 320x240 pixels.
//
// This program requires the UTFT library.
//
#include "Sinclair_M.c"
#include <UTFT.h>


// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t Sinclair_M[];

// Set the pins to the correct ones for your development shield
// ------------------------------------------------------------
// Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Due       : <display model>,25,26,27,28
// Teensy 3.x TFT Test Board                   : <display model>,23,22, 3, 4
// ElecHouse TFT LCD/SD Shield for Arduino Due : <display model>,22,23,31,33
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(TFT01_50,38,39,40,41);

void setup()
{
  myGLCD.InitLCD();

  myGLCD.clrScr();
}

void loop()
{
  myGLCD.setColor(0, 255, 0);
  myGLCD.setBackColor(0, 0, 0);

  myGLCD.setFont(Sinclair_M);
  myGLCD.setFont(BigFont);
  myGLCD.print(" !\"#$%&'()*+,-./", CENTER, 0);
  myGLCD.print("0123456789:;<=>?", CENTER, 16);
  myGLCD.print("@ABCDEFGHIJKLMNO", CENTER, 32);
  myGLCD.print("PQRSTUVWXYZ[\\]^_", CENTER, 48);
  myGLCD.print("`abcdefghijklmno", CENTER, 64);
  myGLCD.print("pqrstuvwxyz{|}~ ", CENTER, 80);

  myGLCD.setFont(SmallFont);
  myGLCD.print(" !\"#$%&'()*+,-./0123456789:;<=>?", CENTER, 120);
  myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", CENTER, 132);
  myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144);

  myGLCD.setFont(SevenSegNumFont);
  myGLCD.print("0123456789", CENTER, 190);

  while(1) {};
}



Wat doe ik nu weer fout?

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: UTFT externe fonts

Berichtdoor nicoverduin » 02 Sep 2015, 07:36

Misschien is het handig om de link van die sinclair_m.c file hier te zetten. IK weet niet wat erin staat.
Hoewel ik wel een vermoeden heb......
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 30
Geregistreerd: 22 Jun 2013, 00:04

Re: UTFT externe fonts

Berichtdoor Duiker » 02 Sep 2015, 20:00

Natuurlijk.
Dit is de link naar de plaats waar de fonts staan: http://www.rinkydinkelectronics.com/r_fonts.php

En dit is wat er in het font Sinclair_M.c staat:

Code: Alles selecteren
// Sinclair_M.c
// Font type    : Full (95 characters)
// Font size    : 16x16 pixels
// Memory usage : 3044 bytes

#if defined(__AVR__)
   #include <avr/pgmspace.h>
   #define fontdatatype const uint8_t
#elif defined(__PIC32MX__)
   #define PROGMEM
   #define fontdatatype const unsigned char
#elif defined(__arm__)
   #define PROGMEM
   #define fontdatatype const unsigned char
#endif

fontdatatype Sinclair_M[3044] PROGMEM={
0x10,0x10,0x20,0x5F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // <space>
0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,  // !

En zo voort.


Wanneer ik dit doe:
Code: Alles selecteren
extern const uint8_t Sinclair_M[];

Dan volgt er na deze regel:
Code: Alles selecteren
myGLCD.setFont(Sinclair_M);

Weer een foutmelding.
invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]

Het ergst vind ik dat alles in IDE 1.0.6. gewoon werkte.

Voor de volledigheid is het de comlete code van het programma:
cpp code
/****************************************************************
* *
* Temperatuur loger. *
* Door Leon Boullart *
* Temperatuur sensor = 18B20 *
* RealTimeClock = DS3231 *
* Display = TFT01_50 *
* Board = ADMEGA 2560 R3 *
* *
*****************************************************************/
// Declare the include files
#include "Sinclair_M.c" // Nodig voor voor Font
#include "SevenSegmentFull.c" // Nodig voor Font
#include <UTFT.h> // Nodig voor touchschreen
#include <UTouch.h> // Nodig voor touchschreen
#include <UTFT_Buttons.h> // Nodig om buttons te definieren
#include <OneWire.h> // Nodig voor temp. sensor
#include <tinyFAT.h> // Nodig voor de SD kaart
#include <UTFT_tinyFAT.h> // Nodig voor de SD kaart
#include <DS3231.h> // Nodig voor de Real time Clock



extern const uint8_t SevenSegmentFull[];
extern uint8_t SmallFont[];
extern const uint8_t Sinclair_M[];



// Definieer de gebruikte pinnen
UTFT myGLCD(TFT01_50, 38, 39, 40, 41); // Definieer type scherm en de gebruikte pennnen
//UTFT myGLCD(TFT01_32WD, 38, 39, 40, 41); // Definieer type scherm en de gebruikte pennnen
UTouch myTouch(6, 5, 4, 3, 2); // Definieer voor de touch de gebruikte pennen
// Init the DS3231 RTC using the hardware interface
DS3231 rtc(SDA, SCL);

// Finally we set up UTFT_Buttons and SD-card
UTFT_Buttons myButtons(&myGLCD, &myTouch);
UTFT_tinyFAT myFiles(&myGLCD);

OneWire ds(12); // Temp Sensor data pin on pin 12 (a 4.7K resistor is necessary)

// Define MainButttons
const int MainButtonsWidht = 100;
const int MainButtonsHeight = 75;
const int MainButtonsFromLeft = 8;
const int MainButtonsFromBottom = 8;
const int MainButtonsSpaceBetween = 8;
// Definieer de grafie begin positie
const int GrafiekXpos = 100;
const int GrafiekYpos = 300;
const int GrafiekHoogte = 100;
const int GrafiekBreedte = 600;
const int GrafiekStreepjes = 3;
// Define max Nr of sensors
const int MaxTempSensors = 4;
const byte Max_Aantal_Sensors = 6; // 1 Sensor op achterkant bord, 4 stuks naar buiten uitgevoerd.


//Define global variabele
int myTouchXpos, myTouchYpos;
int GrafiekBut1, GrafiekBut2, GrafiekBut3, GrafiekBut4, GrafiekBut5;
int SetBut1, SetBut2, SetBut3, SetBut4, SetBut5, SetBut6, SetBut7, SetBut8, SetBut9, SetBut10, SetBut11, SetBut12, SetBut13;
int but1, but2, but3, but4, but5, but6, pressed_button;
int HorizontaleAsType;
int SensorNr;
// Voor de Temp sensors:
byte TempSensorPresent;
byte TempSensorType;
byte TempSensorData[10];
byte TempSensorAdres[8];
float celsius, fahrenheit;
byte TempSensorArray[Max_Aantal_Sensors][20]; // y=0..Max_Aantal_Sensors x=0..19 x=sensor adres en data
byte Y_Sensors_teller;
byte AantalGedetecteerdeSensors; // nog aanpassen


// Init a Time-data structure
Time timeData;







void setup(){
// put your setup code here, to run once:
myGLCD.InitLCD(LANDSCAPE);
myGLCD.clrScr();
myGLCD.setFont(Sinclair_M);
myTouch.InitTouch(LANDSCAPE); // De orientatie
myTouch.setPrecision(PREC_MEDIUM); // Gevoeligheid touch schreen
myButtons.setTextFont(Sinclair_M);
file.initFAT(); // SD kaart
HorizontaleAsType = 0;
SensorNr = 1;
rtc.begin();
Serial.begin(9600);
Serial.println("Serieel is aan...");
Maak_TempSensorArray_leeg();
Y_Sensors_teller = 0;
while (ds.search(TempSensorAdres)) {
Detecteer_TempSensors();
}
// TempSensorArray is nu gevuld met alleen de adressen van de sensors. Mogelijk zijn er ook foute sensors.

Afdrukken_TempSensorArray();

} // setup

void loop() {
MainSchreenButttons();
// Nu de juiste toets afvangen
while(true) {
if (myTouch.dataAvailable() == true) {
pressed_button = myButtons.checkButtons();
switch (pressed_button) {
case 0: { // RUN Button
RunLogger();
myGLCD.clrScr();
MainSchreenButttons();
break;
}
case 1: { // SET Button
SetSchreen();
myGLCD.clrScr();
MainSchreenButttons();
break;
}
case 2: { // Grafiek Button
Grafiek();
myGLCD.clrScr();
MainSchreenButttons();
break;
} // case 2:
} // switch
} // if
} // while
} // void loop

int Grafiek() {
myGLCD.clrScr();
// Definieer de knoppen
myButtons.deleteAllButtons();
GrafiekBut1 = myButtons.addButton( MainButtonsFromLeft + (0 * MainButtonsWidht) + (0 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "BACK");
GrafiekBut2 = myButtons.addButton( MainButtonsFromLeft + (1 * MainButtonsWidht) + (1 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "SENS+");
GrafiekBut3 = myButtons.addButton( MainButtonsFromLeft + (2 * MainButtonsWidht) + (2 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "SENS-");
GrafiekBut4 = myButtons.addButton( MainButtonsFromLeft + (3 * MainButtonsWidht) + (3 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "SPAN+");
GrafiekBut5 = myButtons.addButton( MainButtonsFromLeft + (4 * MainButtonsWidht) + (4 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "SPAN-");
myButtons.drawButtons();
if (SensorNr == 1) myButtons.disableButton(GrafiekBut3, true);
if (SensorNr == MaxTempSensors) myButtons.disableButton(GrafiekBut2, true);
if (HorizontaleAsType == 0) myButtons.disableButton(GrafiekBut5, true);
if (HorizontaleAsType == 10) myButtons.disableButton(GrafiekBut4, true);

Draw_Frame();

// Teken hier de grafiek
// Nu de grafiek achtergrond tekenen
for (int i=10; i<=100; i=i+10) {
myGLCD.setColor(0, 255, 0); // green
myGLCD.drawLine(GrafiekXpos, GrafiekYpos-i, GrafiekXpos-GrafiekStreepjes, GrafiekYpos-i); // Streepjes op de vertikale as links
myGLCD.drawLine(GrafiekXpos+600, GrafiekYpos-i, GrafiekXpos+600+GrafiekStreepjes, GrafiekYpos-i); // Streepjes op de vertikale as rechts
myGLCD.setColor(0, 128, 0); // lightgreen
myGLCD.drawLine(GrafiekXpos, GrafiekYpos-i, GrafiekXpos+GrafiekBreedte, GrafiekYpos-i); // Horizontaal licht raster
}
for (int i=10; i<=600; i=i+10) {
myGLCD.setColor(0, 255, 0); // green
myGLCD.drawLine(GrafiekXpos+i, GrafiekYpos, GrafiekXpos+i, GrafiekYpos+GrafiekStreepjes); // Streepjes op de horizontale as
myGLCD.setColor(0, 128, 0); // lightgreen
myGLCD.drawLine(GrafiekXpos+i, GrafiekYpos, GrafiekXpos+i, GrafiekYpos-GrafiekHoogte); // Vertikaal licht raster
}
// Nu de basislijnen tekenen
myGLCD.setColor(0, 255, 0); // green
myGLCD.drawLine(GrafiekXpos, GrafiekYpos, GrafiekXpos+GrafiekBreedte, GrafiekYpos); // Horizontale basislijn
myGLCD.drawLine(GrafiekXpos, GrafiekYpos, GrafiekXpos, GrafiekYpos - GrafiekHoogte); // Vertikale basislijn
myGLCD.drawLine(GrafiekXpos+600, GrafiekYpos, GrafiekXpos+600, GrafiekYpos - GrafiekHoogte); // Vertikale basislijn

// Nu de langere streepjes op de horizontale as
for (int i=100; i<600; i=i+100) {
myGLCD.setColor(0, 255, 0); // green
myGLCD.drawLine(GrafiekXpos+i, GrafiekYpos, GrafiekXpos+i, GrafiekYpos+GrafiekStreepjes+GrafiekStreepjes); // Streepjes op de horizontale as
}
// Berekern de vertikale as
myGLCD.setFont(SmallFont);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_WHITE);

int TempMin = 20; // Dit staat tijdeljk hier
int TempMax = 22; // Dit staat tijdeljk hier
float TempDelta, TempCalc;
// vertikale as is autoscale
TempDelta = TempMax - TempMin;
for (int i=0; i<=10; i++) { // zet de vertikale schaal
TempCalc = (TempMin+((TempDelta/10) *i));
myGLCD.printNumF(TempCalc , 2, GrafiekXpos-45, GrafiekYpos-6-(i*10)); // -6 is de halve karakter hoogte (Links)
myGLCD.printNumF(TempCalc , 2, GrafiekXpos+608, GrafiekYpos-6-(i*10)); // -6 is de halve karakter hoogte (Rechtes)
}

// Bereken de horizontale as
myGLCD.setColor(255, 255, 255); // White
TekenHorizontaleAsType(HorizontaleAsType); // bij aanvang is HorizontaleAsType 0

// Teken het graden celcius teken:
myGLCD.print("C", GrafiekXpos-25, GrafiekYpos-GrafiekHoogte-30); // Links
myGLCD.drawCircle(GrafiekXpos-30, GrafiekYpos-GrafiekHoogte-30,3); // Links
myGLCD.print("C", GrafiekXpos+600+25, GrafiekYpos-GrafiekHoogte-30); // Rechtes
myGLCD.drawCircle(GrafiekXpos+600+20, GrafiekYpos-GrafiekHoogte-30,3); // Rechtes

// Teken de SensorNr tekst
myGLCD.print("Sensor ", GrafiekXpos+300-64, GrafiekYpos-GrafiekHoogte-30);
myGLCD.printNumI(SensorNr, GrafiekXpos+300+64, GrafiekYpos-GrafiekHoogte-30);

// Nu de juiste toets afvangen
while(true) {
if (myTouch.dataAvailable() == true) {
pressed_button = myButtons.checkButtons();
switch (pressed_button) {
case 0: { // Back
myButtons.deleteAllButtons();
return(-1);
break;
} // case 0:
case 1: { // SENS+
if (SensorNr < MaxTempSensors) {
SensorNr = SensorNr + 1;
myGLCD.printNumI(SensorNr, GrafiekXpos+300+64, GrafiekYpos-GrafiekHoogte-30);
}
if (SensorNr == MaxTempSensors) {
myButtons.disableButton(GrafiekBut2, true);
}
if (myButtons.buttonEnabled(GrafiekBut3) == false) {
myButtons.enableButton(GrafiekBut3, true);
}
break;
} // case 1:
case 2: { // SENS-
if (SensorNr > 1) {
SensorNr = SensorNr - 1;
myGLCD.printNumI(SensorNr, GrafiekXpos+300+64, GrafiekYpos-GrafiekHoogte-30);
if (SensorNr == 1) {
myButtons.disableButton(GrafiekBut3, true);
}
if (myButtons.buttonEnabled(GrafiekBut2) == false) {
myButtons.enableButton(GrafiekBut2, true);
}
}
break;
} // case 2:
case 3: { // SPAN+
if (HorizontaleAsType < 10) {
HorizontaleAsType = HorizontaleAsType+1;
TekenHorizontaleAsType(HorizontaleAsType);
if (HorizontaleAsType == 10) {
myButtons.disableButton(GrafiekBut4, true);
}
if (myButtons.buttonEnabled(GrafiekBut5) == false) {
myButtons.enableButton(GrafiekBut5, true);
}
}
break;
} // case 3:
case 4: { // SPAN-
if (HorizontaleAsType > 0) {
HorizontaleAsType = HorizontaleAsType-1;
TekenHorizontaleAsType(HorizontaleAsType);
if (HorizontaleAsType ==0) {
myButtons.disableButton(GrafiekBut5, true);
}
if (myButtons.buttonEnabled(GrafiekBut4) == false) {
myButtons.enableButton(GrafiekBut4, true);
}
} // case 4:
break;
}
default: {
// if nothing else matches, do the default
} // default
} // switch
} // if
} // while
} // Grafiek

int MainSchreenButttons() {
but1 = myButtons.addButton( MainButtonsFromLeft + (0 * MainButtonsWidht) + (0 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "RUN"); //RUNLOG
but2 = myButtons.addButton( MainButtonsFromLeft + (1 * MainButtonsWidht) + (1 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "SET"); // SET
but3 = myButtons.addButton( MainButtonsFromLeft + (2 * MainButtonsWidht) + (2 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "GRAF."); //GRAFIEK
myButtons.drawButtons();
Draw_Frame();
} // funtion Eigenlijk klopt dit niet. Want alles wat hier gebeurd is globaal, en dat zou lokaal moeten zijn.

void Draw_Frame() {

myGLCD.setColor(0, 128, 0); // De regel bovenin
myGLCD.fillRect(0,0,myGLCD.getDisplayXSize()-1, 18);

myGLCD.setFont(Sinclair_M);
myGLCD.setBackColor(0, 128, 0);
myGLCD.setColor(VGA_WHITE);
myGLCD.print("TEMPERATUUR LOGGER", CENTER, 2);

myGLCD.setColor(VGA_WHITE);
myGLCD.drawRect(0, 0, myGLCD.getDisplayXSize()-1, myGLCD.getDisplayYSize()-1);
myGLCD.drawRect(0, 0, myGLCD.getDisplayXSize()-1, 19);
} // Draw_Frame

int SetSchreen() {
String Tekst;
Tekst = "Het aantal gedetecteerde temp. sensors = ";
myGLCD.clrScr();
// Definieer de knoppen
myButtons.deleteAllButtons();
SetBut1 = myButtons.addButton( MainButtonsFromLeft + (0 * MainButtonsWidht) + (0 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "BACK");
SetBut2 = myButtons.addButton( MainButtonsFromLeft + (1 * MainButtonsWidht) + (1 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, (2 * MainButtonsWidht) + MainButtonsSpaceBetween, MainButtonsHeight, "SET CLOCK");
//SetBut6 = myButtons.addButton( MainButtonsFromLeft + (5 * MainButtonsWidht) + (5 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "ENTER");
myButtons.drawButtons(); // Pas nu worden de knoppen werkelijk getekend

// Teken hier het SET scherm
Draw_Frame();
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_WHITE);

const int SettingSchermXpos = 20;
const int SettingSchermYpos = 30;
const int Regelafstand = 18;
Afdrukken_TempSensorArray();

//AantalGedetecteerdeSensors = 5;
// Let op! MaxTempSensors heeft met grafiek te maken. Daar mogen max 4 sensors zijn. FF checken wat de gevolgen zijn.
if (AantalGedetecteerdeSensors > MaxTempSensors) {
myGLCD.setColor(VGA_RED);
myGLCD.print("Er zijn meer dan 4 Temp. sensors gedetecteerd!", SettingSchermXpos, SettingSchermYpos+(19*Regelafstand));
myGLCD.setColor(VGA_WHITE);
}
else {
myGLCD.print(Tekst, SettingSchermXpos, SettingSchermYpos+(19*Regelafstand));
myGLCD.printNumI(AantalGedetecteerdeSensors, SettingSchermXpos+(Tekst.length()*16), SettingSchermYpos+(19*Regelafstand));
} // else


// Nu de juiste toets afvangen
while(true) {
if (myTouch.dataAvailable() == true) {
pressed_button = myButtons.checkButtons();
switch (pressed_button) {
case 0: { // Back
myButtons.deleteAllButtons();
return(-1);
break;
}
case 1: { // SET CLOCK
myButtons.deleteAllButtons();
SetRTC();
return(-1);
break;
}
case 2: { // Deze toets bestaat helemaal niet
//myGLCD.print("SET_button 3", 110, 260);
//myButtons.deleteAllButtons();
//return(-1);
break;
}
case 3: { // Deze toets bestaat helemaal niet
//myGLCD.print("SET_button 4", 110, 260);
//myButtons.deleteAllButtons();
//return(-1);
break;
}
case 4: { // Deze toets bestaat helemaal niet
//myGLCD.print("SET_button 5", 110, 260);
//myButtons.deleteAllButtons();
//return(-1);
break;
}
case 5: { // Deze toets bestaat helemaal niet
//myGLCD.print("SET_button 6", 110, 260);
//myButtons.deleteAllButtons();
//return(-1);
break;
}
} // switch
} // if
} // while
}; // SetSchreen

int RunLogger() {
myGLCD.clrScr();
myButtons.deleteAllButtons();
but1 = myButtons.addButton( MainButtonsFromLeft + (0 * MainButtonsWidht) + (0 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, "BACK");
//but2 = myButtons.addButton( MainButtonsFromLeft + (1 * MainButtonsWidht) + (1 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, BLAUW);
//but3 = myButtons.addButton( MainButtonsFromLeft + (2 * MainButtonsWidht) + (2 * MainButtonsSpaceBetween), myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight, MainButtonsWidht, MainButtonsHeight, BLAUW);
myButtons.drawButtons();
Draw_Frame();

myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_WHITE);
// Teken hier het RUN logger scherm
//myGLCD.drawLine(0, (21+ myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom)/2, myGLCD.getDisplayXSize()-1, (21+ myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom)/2); // Hor. lijn midden
myGLCD.drawLine(0, 21 + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom-21)/2), myGLCD.getDisplayXSize()-1, 21 + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom-21)/2)); // Hor. lijn midden
myGLCD.drawLine(0, 21 + (myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom-21), myGLCD.getDisplayXSize()-1, 21 + (myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom-21)); //Hor. lijn onder
myGLCD.drawLine((myGLCD.getDisplayXSize()/2)-1, 21, (myGLCD.getDisplayXSize()/2)-1, (myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom)); // Vert.lijn midden

myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect( (myGLCD.getDisplayXSize()/2)-69, 21 + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2)-9, (myGLCD.getDisplayXSize()/2)+67, 21 + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2)+9); // blok in het midden
myGLCD.setColor(VGA_WHITE);
myGLCD.drawRect( (myGLCD.getDisplayXSize()/2)-69, 21 + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2)-9, (myGLCD.getDisplayXSize()/2)+67, 21 + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2)+9); // blok in het midden



myGLCD.print("Sensor 1", (myGLCD.getDisplayXSize()/4)-96+32, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-65);
myGLCD.print("Sensor 2", (myGLCD.getDisplayXSize()/2) + (myGLCD.getDisplayXSize()/4)-96+32, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-65);
myGLCD.print("Sensor 3", (myGLCD.getDisplayXSize()/4)-96+32, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2) + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-65);
myGLCD.print("Sensor 4", (myGLCD.getDisplayXSize()/2) + (myGLCD.getDisplayXSize()/4)-96+32, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2) + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-65);

myGLCD.setFont(SevenSegmentFull);

myGLCD.setColor(0, 255, 0);
myGLCD.printNumF(rtc.getTemp(), 1, (myGLCD.getDisplayXSize()/4)-96, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4));
myGLCD.print("C", (myGLCD.getDisplayXSize()/4)+64, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4));
myGLCD.print("00.0 C", (myGLCD.getDisplayXSize()/2) + (myGLCD.getDisplayXSize()/4)-96, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4));
myGLCD.print("00.0 C", (myGLCD.getDisplayXSize()/4)-96, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2) + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4));
myGLCD.print("00.0 C", (myGLCD.getDisplayXSize()/2) + (myGLCD.getDisplayXSize()/4)-96, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2) + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4));

myGLCD.print("o", (myGLCD.getDisplayXSize()/4)+42, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-50);
myGLCD.print("o", (myGLCD.getDisplayXSize()/2) + (myGLCD.getDisplayXSize()/4)+42, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-50);
myGLCD.print("o", (myGLCD.getDisplayXSize()/4)+42, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2) + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-50);
myGLCD.print("o", (myGLCD.getDisplayXSize()/2) + (myGLCD.getDisplayXSize()/4)+42, ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2) + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/4)-50);

// Nu de juiste toets afvangen
while(true) {
myGLCD.setFont(Sinclair_M);
myGLCD.setColor(VGA_WHITE);
myGLCD.print(rtc.getTimeStr(), (myGLCD.getDisplayXSize()/2)-63, 21 + ((myGLCD.getDisplayYSize() - MainButtonsFromBottom - MainButtonsHeight - MainButtonsFromBottom - 21)/2)-8);

if (myTouch.dataAvailable() == true) {
pressed_button = myButtons.checkButtons();
switch (pressed_button) {
case 0: { // Back button
myButtons.deleteAllButtons();
return(-1);
break;
}
case 1: { // Deze toets bestaat helemaal niet
//myGLCD.print("Niet bestaande toets 2", 110, 260);
//return(-1);
//break;
}
case 2: { // Deze toets bestaat helemaal niet
//myGLCD.print("Niet bestaande toets 3", 110, 260);
//return(-1);
//break;
}
} // switch
} // if
} // while
}; //RunLogger

void TekenHorizontaleAsType(int HorizontaleAsType) {
// First delete old info
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(1, GrafiekYpos+GrafiekStreepjes+GrafiekStreepjes+1, myGLCD.getDisplayXSize()-2, GrafiekYpos+46);
//myGLCD.setColor(VGA_WHITE);
//myGLCD.drawRect(1, GrafiekYpos+GrafiekStreepjes+GrafiekStreepjes+1, myGLCD.getDisplayXSize()-2, GrafiekYpos+46); // alleen tijdens ontwikkeling nodig

// Then write the value to the schreen depening of HorizontaleAsType
myGLCD.setFont(Sinclair_M);
myGLCD.setColor(VGA_WHITE);
switch (HorizontaleAsType) {
case 0: { //Keuze is 60 seconden
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/10, GrafiekXpos+i-12, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/10, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande seconden", GrafiekXpos+300-177, GrafiekYpos+30);
break;
}
case 1: { //Keuze is 120
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/5, GrafiekXpos+i-18, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/5, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande seconden", GrafiekXpos+300-176, GrafiekYpos+30);
break;
}
case 2: { //Keuze is 6 minuten
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/100, GrafiekXpos+i-6, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/100, GrafiekXpos+i-3, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande minuten", GrafiekXpos+300-168, GrafiekYpos+30);
break;
}
case 3: { //Keuze is 12 minuten
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/50, GrafiekXpos+i-12, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/50, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande minuten", GrafiekXpos+300-168, GrafiekYpos+30);
break;
}
case 4: { //Keuze is 60 minuten
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/10, GrafiekXpos+i-12, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/10, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande minuten", GrafiekXpos+300-168, GrafiekYpos+30);
break;
}
case 5: { //Keuze is 120 minuten
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/5, GrafiekXpos+i-18, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/5, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande minuten", GrafiekXpos+300-168, GrafiekYpos+30);
break;
}
case 6: { //Keuze is 6 uur
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/100, GrafiekXpos+i-6, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/100, GrafiekXpos+i-3, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande uren", GrafiekXpos+300-144, GrafiekYpos+30);
break;
}
case 7: { //Keuze is 12 uur
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/50, GrafiekXpos+i-12, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/50, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande uren", GrafiekXpos+300-144, GrafiekYpos+30);
break;
}
case 8: { //Keuze is 6 dagen
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/100, GrafiekXpos+i-6, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/100, GrafiekXpos+i-3, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande dagen", GrafiekXpos+300-152, GrafiekYpos+30);
break;
}
case 9: { //Keuze is 12 dagen
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/50, GrafiekXpos+i-12, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/50, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande dagen", GrafiekXpos+300-152, GrafiekYpos+30);
break;
}
case 10: { //Keuze is 60 dagen
for (int i=0; i<=600; i=i+100) {
if (myGLCD.getFont() == Sinclair_M) {myGLCD.printNumI((600-i)/10, GrafiekXpos+i-12, GrafiekYpos+10);}
if (myGLCD.getFont() == SmallFont) {myGLCD.printNumI((600-i)/10, GrafiekXpos+i-6, GrafiekYpos+10);}
}
myGLCD.print("De voorgaande dagen", GrafiekXpos+300-152, GrafiekYpos+30);
break;
}
default: {
// if nothing else matches, do the default
// default is optional
}
} // switch

} // TekenHorizontaleAsType

int SetRTC() {
myGLCD.clrScr();
myButtons.deleteAllButtons();
Draw_Frame();
const int ButtonsWidht = 100;
const int ButtonsHeight = 75;
const int ButtonsFromLeft = 8;
const int ButtonsFromTop = 21;
const int ButtonsSpaceBetween = 8;
const int ButtonsFromBottom = 8;

SetBut1 = myButtons.addButton( ButtonsFromLeft + (0 * ButtonsWidht) + (0 * ButtonsSpaceBetween), myGLCD.getDisplayYSize() - ButtonsFromBottom - ButtonsHeight, ButtonsWidht, ButtonsHeight, "BACK");

SetBut2 = myButtons.addButton( ButtonsFromLeft + (0 * ButtonsWidht) + (0 * ButtonsSpaceBetween), ButtonsFromTop + (1 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "+");
SetBut3 = myButtons.addButton( ButtonsFromLeft + (1 * ButtonsWidht) + (1 * ButtonsSpaceBetween), ButtonsFromTop + (1 * ButtonsSpaceBetween) + (0 * ButtonsHeight), 2*ButtonsWidht, ButtonsHeight, "+");
SetBut4 = myButtons.addButton( ButtonsFromLeft + (3 * ButtonsWidht) + (2 * ButtonsSpaceBetween), ButtonsFromTop + (1 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "+");
SetBut5 = myButtons.addButton( ButtonsFromLeft + (4 * ButtonsWidht) + (3 * ButtonsSpaceBetween), ButtonsFromTop + (1 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "+");
SetBut6 = myButtons.addButton( ButtonsFromLeft + (5 * ButtonsWidht) + (4 * ButtonsSpaceBetween), ButtonsFromTop + (1 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "+");
SetBut7 = myButtons.addButton( ButtonsFromLeft + (6 * ButtonsWidht) + (5 * ButtonsSpaceBetween), ButtonsFromTop + (1 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "+");

SetBut8 = myButtons.addButton( ButtonsFromLeft + (0 * ButtonsWidht) + (0 * ButtonsSpaceBetween), ButtonsFromTop + (15 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "-");
SetBut9 = myButtons.addButton( ButtonsFromLeft + (1 * ButtonsWidht) + (1 * ButtonsSpaceBetween), ButtonsFromTop + (15 * ButtonsSpaceBetween) + (0 * ButtonsHeight), 2*ButtonsWidht, ButtonsHeight, "-");
SetBut10 = myButtons.addButton( ButtonsFromLeft + (3 * ButtonsWidht) + (2 * ButtonsSpaceBetween), ButtonsFromTop + (15 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "-");
SetBut11 = myButtons.addButton( ButtonsFromLeft + (4 * ButtonsWidht) + (3 * ButtonsSpaceBetween), ButtonsFromTop + (15 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "-");
SetBut12 = myButtons.addButton( ButtonsFromLeft + (5 * ButtonsWidht) + (4 * ButtonsSpaceBetween), ButtonsFromTop + (15 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "-");
SetBut13 = myButtons.addButton( ButtonsFromLeft + (6 * ButtonsWidht) + (5 * ButtonsSpaceBetween), ButtonsFromTop + (15 * ButtonsSpaceBetween) + (0 * ButtonsHeight), ButtonsWidht, ButtonsHeight, "-");
myButtons.drawButtons();

//const int ClockSchermXpos = 31;
const int ClockSchermYpos = 23;
const int Regelafstand = 18;
myGLCD.setBackColor(VGA_BLACK);

// Hier het keyboard aanroepen enz.
timeData = rtc.getTime();
int Dag = timeData.date;
int Maand = timeData.mon;
int Jaar = timeData.year;
int Uur = timeData.hour;
int Minuut = timeData.min;
int Seconde = timeData.sec;

//rtc.setDate(Dag, Maand, Jaar);
while(true) {
timeData = rtc.getTime();
myGLCD.printNumI(timeData.date, 43, ClockSchermYpos+(5*Regelafstand));
myGLCD.print(rtc.getMonthStr(), 170, ClockSchermYpos+(5*Regelafstand));
myGLCD.printNumI(timeData.year, 343, ClockSchermYpos+(5*Regelafstand));
myGLCD.printNumI(timeData.hour, 470, ClockSchermYpos+(5*Regelafstand));
myGLCD.printNumI(timeData.min, 577, ClockSchermYpos+(5*Regelafstand));
myGLCD.printNumI(timeData.sec, 683, ClockSchermYpos+(5*Regelafstand));
//myGLCD.printNumF(rtc.getTemp(), 2, 10, ClockSchermYpos+(12*Regelafstand));
if (myTouch.dataAvailable() == true) {
pressed_button = myButtons.checkButtons();
switch (pressed_button) {
case 0: { // Back
myButtons.deleteAllButtons();
return(-1);
break;
}
case 1: { // + Dag
if (Dag < 31) {
Dag = Dag + 1;
myGLCD.print(" ", 43, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 2: { // + Maand
if (Maand < 12) {
Maand = Maand + 1;
myGLCD.print(" ", 170, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 3: { // + Jaar
if (Jaar < 2099) {
Jaar = Jaar + 1;
myGLCD.print(" ", 343, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 4: { // + Uren
if (Uur < 23) {
Uur = Uur + 1;
myGLCD.print(" ", 470, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 5: { // + Minuten
if (Minuut < 59) {
Minuut = Minuut + 1;
myGLCD.print(" ", 577, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 6: { // + Seconden
timeData = rtc.getTime();
if (Seconde < 59) {
Seconde = Seconde + 1;
myGLCD.print(" ", 683, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 7: { // - Dag
if (Dag > 1 ) {
Dag = Dag - 1;
myGLCD.print(" ", 43, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 8: { // - Maand
if (Maand > 1 ) {
Maand = Maand - 1;
myGLCD.print(" ", 170, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 9: { // - Jaar
if (Jaar > 1999 ) {
Jaar = Jaar - 1;
myGLCD.print(" ", 343, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 10: { // - Uur
if (Uur >= 1 ) {
Uur = Uur - 1;
myGLCD.print(" ", 470, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 11: { // - Minuut
if (Minuut >= 1 ) {
Minuut = Minuut - 1;
myGLCD.print(" ", 577, ClockSchermYpos+(5*Regelafstand));
}
break;
}
case 12: { // - Seconde
timeData = rtc.getTime();
if (Seconde >= 1 ) {
Seconde = Seconde - 1;
myGLCD.print(" ", 683, ClockSchermYpos+(5*Regelafstand));
}
break;
}
} // switch
rtc.setDate(Dag, Maand, Jaar);
rtc.setTime(Uur, Minuut, Seconde);
} //if
} // while
} // SetRTC

void Maak_TempSensorArray_leeg(){
// Maak variabele "TempSensorArray" leeg
Serial.println();
for (byte y=0; y<10; y++) { // max 10 sensors uitlezen
for (byte x=0; x<18; x++) { // aantal adres + data velden
TempSensorArray[y][x] = 0;
} // for
} // for
} // Maak_TempSensorArray_leeg

void Detecteer_TempSensors() {
// Als er een nieuwe Temp. Sensor wordt gevonden
Serial.println();
Serial.print("ROM =");
for(byte i = 0; i < 8; i++) {
Serial.print(" ");
TempSensorArray[Y_Sensors_teller][i]=TempSensorAdres[i];
Serial.print(TempSensorArray[Y_Sensors_teller][i], HEX);
} // for

// Als het sensor adres foutief wordt gelezen
if (OneWire::crc8(TempSensorAdres, 7) != TempSensorAdres[7]) {
//Serial.println("CRC is not valid!");
for(byte i = 0; i < 8; i++) {
TempSensorArray[Y_Sensors_teller][i]=255; // FF als adres schrijven als het adres mis is.
}
} // if
Y_Sensors_teller = Y_Sensors_teller + 1;
} // Detecteer_TempSensors


void Afdrukken_TempSensorArray() {
// Afdrukken "TempSensorArray"
Serial.println();
for (byte y=0; y<Max_Aantal_Sensors; y++) { // max aantal sensors uitlezen
for (byte x=0; x<18; x++) { // aantal adres + data velden
Serial.print(" ");Serial.print(TempSensorArray[y][x], HEX);
if (x==7) {
Serial.print(" ");
} //if
} // for
Serial.println();
} // for
Serial.println();
Serial.println();
} // Afdrukken_TempSensorArray

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: UTFT externe fonts

Berichtdoor nicoverduin » 02 Sep 2015, 22:43

Nou dit zal nooit werken in deze opzet. Sinclair_M is een array die in het flash geheugen zit. Daarna je hem opnieuw definieren.
Je kan die regel gewoon gelaten want hij wordt als in die .c file gemaakt.
Nu probeer je 2 verschillende definities voor de zelfde variabele (Sinclair_M) te creeren terwijl dat helemaal niet nodig is. En ik betwijfel sterk dat je dit onder 1.0.6 er wel doorheen hebt gekregen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 30
Geregistreerd: 22 Jun 2013, 00:04

Re: UTFT externe fonts

Berichtdoor Duiker » 11 Sep 2015, 18:48

Helaas gaat er nog steeds wat mis.
Ik heb er even een test programmatje van gemaakt.

cpp code
#include "Sinclair_M.c"
#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];

UTFT myGLCD(TFT01_50,38,39,40,41);

void setup()
{
myGLCD.InitLCD();
myGLCD.clrScr();
}

void loop()
{
myGLCD.setColor(0, 255, 0);
myGLCD.setBackColor(0, 0, 0);

myGLCD.setFont(Sinclair_M);
myGLCD.print(" !\"#$%&'()*+,-./", CENTER, 0);
myGLCD.print("0123456789:;<=>?", CENTER, 16);
myGLCD.print("@ABCDEFGHIJKLMNO", CENTER, 32);
myGLCD.print("PQRSTUVWXYZ[\\]^_", CENTER, 48);
myGLCD.print("`abcdefghijklmno", CENTER, 64);
myGLCD.print("pqrstuvwxyz{|}~ ", CENTER, 80);

myGLCD.setFont(SmallFont);
myGLCD.print(" !\"#$%&'()*+,-./0123456789:;<=>?", CENTER, 120);
myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", CENTER, 132);
myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144);

myGLCD.setFont(SevenSegNumFont);
myGLCD.print("0123456789", CENTER, 190);

while(1) {};
}


Op regel 21 krijg ik de foutmelding:
Code: Alles selecteren
UTFT_ViewFont.ino:33:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]



Dit is SinclairM.c
cpp code
// Sinclair_M.c
// Font type : Full (95 characters)
// Font size : 16x16 pixels
// Memory usage : 3044 bytes

#if defined(__AVR__)
#include <avr/pgmspace.h>
#define fontdatatype const uint8_t
#elif defined(__PIC32MX__)
#define PROGMEM
#define fontdatatype const unsigned char
#elif defined(__arm__)
#define PROGMEM
#define fontdatatype const unsigned char
#endif

fontdatatype Sinclair_M[3044] PROGMEM={
0x10,0x10,0x20,0x5F,


Wie kan me verder helpen?

Berichten: 30
Geregistreerd: 22 Jun 2013, 00:04

Re: UTFT externe fonts

Berichtdoor Duiker » 23 Sep 2015, 21:37

Nou, de aanhouder wint zal ik maar zeggen. Het probleem is opgelost.
De oplossing is deze regel verwijderen:
Code: Alles selecteren
#include "Sinclair_M.c"

Oorspronkelijk stond deze regel ook in het programma:
Code: Alles selecteren
extern uint8_t Sinclair_M[];

Maar door allerlei experimenten was ie even weg. Maar deze declaratie moet wel gedaan worden.
E.e.a. heb ik niet zelf uitgevonden. Maar ik heb hulp gehad van: http://forum.arduino.cc/index.php?topic=348993.0

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten