void toepassen en ( Printen op scherm)

Hardware die niet past in bovenstaande onderwerpen
Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

void toepassen en ( Printen op scherm)

Berichtdoor Redundant » 16 Aug 2014, 14:09

Hallo allemaal, we zijn er weer eens met een paar vragen.
Ik heb een test-programma gemaakt om het werken met void() te proberen.
Enigzins gelukt, maar ik krijg de void Show() niet aan de gang.

Maar ook iets waar ik niet eerder last van heb gehad, er is niets te zien op het PC-scherm als ik ctrl+shift+M intoets.

In andere programma's is alles wel te zien.

Wie wil er eens naar kijken svp.
gr, Martin

Code: Alles selecteren

// LCD Scherm
#include <LiquidCrystal.h>
LiquidCrystal lcd(48, 49, 47, 46, 45, 44); // select the pins used on the LCD panelLiquidCrystal
int backLight  = 200; // LCD Panel Backlight LED connected to digital pin 10
int LightLevel = 255; // Initialise light full on



int A=0;
int U=0;
int Ge=0;
int Ro=0;

void setup(){                            //  setup   begin  //======================================
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);  // Led 2
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);  // Standaard Led


  LedAan(13);      // Standaard Led aan
  delay(1000);
  LedUit(13);      // Standaard Led uit
  delay(1000);
  PKSge_aan(10);   // Led 2  Gele Led aan 
  delay(1000);
  PKSge_uit(10);   // Led 2  Gele Led uit
  delay(1000);
  Show();    //  Printen om te testen
  delay(1000);
 
Serial.begin(9600);

}                              // setup   eind  //===================================================


void loop()         //  void loop()   begin //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{}


void LedAan(int lampje)        // Standaard Led
//Serial.println("Led Aan ");
{
  digitalWrite(lampje, HIGH);
  delay(1000);
  A=1;
}

void LedUit(int lampje)        // Standaard Led
//Serial.println ("Led Uit ");
{
  digitalWrite(lampje, LOW);
  delay(1000);
  U=2;
}

void PKSge_aan(int Geel)             // Led 2  aan
//Serialprint("PKSpr ");
{
  digitalWrite(Geel, HIGH);
  delay(1000);
  Ge=3;
}

void PKSge_uit(int Geel)             // Led 2  uit
//Serialprint("PKSpr ");
{
  digitalWrite(Geel, LOW);
  delay(1000);
  Ge=(4);
}

  void Show()                      //  Printen om te testen
{
  Serial.println ("Show ");
  Serial.print (A);
  Serial.println (" = TestLed aan,  ");
  Serial.print (U);
  Serial.print (" = TestLed uit,  ");
  Serial.print (Ge);
  Serial.println (" = Geel aan  ");
  Serial.print (Ro);
  Serial.println (" = Rood uit  ");

}

Advertisement

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

Re: void toepassen en ( Printen op scherm)

Berichtdoor nicoverduin » 16 Aug 2014, 14:43

a) als je met void bezig bent, ben je dus nergens mee bezig :mrgreen: Je bent namelijk met functies bezig. En void betekent dat de functie niets teruggeeft.
b) je schrijft al naar Serial terwijl je Serial nog niet geopend hebt. Vandaar dat je niets ziet.
c) er is een nieuwe optie coor de CODE tag (rechtes button op uitgebreide reactie scherm. Zie: viewtopic.php?f=16&t=903

En dan ziet je code er zo uit. 't is ff mooier en leest prettiger:

cpp code
// LCD Scherm
#include <LiquidCrystal.h>
LiquidCrystal lcd(48, 49, 47, 46, 45, 44); // select the pins used on the LCD panelLiquidCrystal
int backLight = 200; // LCD Panel Backlight LED connected to digital pin 10
int LightLevel = 255; // Initialise light full on



int A=0;
int U=0;
int Ge=0;
int Ro=0;

void setup(){ // setup begin //======================================
//
// deze als eerste doen
//
Serial.begin(9600);

pinMode(10, OUTPUT);
pinMode(11, OUTPUT); // Led 2
pinMode(12, OUTPUT);
pinMode(13, OUTPUT); // Standaard Led


LedAan(13); // Standaard Led aan
delay(1000);
LedUit(13); // Standaard Led uit
delay(1000);
PKSge_aan(10); // Led 2 Gele Led aan
delay(1000);
PKSge_uit(10); // Led 2 Gele Led uit
delay(1000);
Show(); // Printen om te testen
delay(1000);

} // setup eind //===================================================


void loop() // void loop() begin //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{}


void LedAan(int lampje) // Standaard Led
//Serial.println("Led Aan ");
{
digitalWrite(lampje, HIGH);
delay(1000);
A=1;
}

void LedUit(int lampje) // Standaard Led
//Serial.println ("Led Uit ");
{
digitalWrite(lampje, LOW);
delay(1000);
U=2;
}

void PKSge_aan(int Geel) // Led 2 aan
//Serialprint("PKSpr ");
{
digitalWrite(Geel, HIGH);
delay(1000);
Ge=3;
}

void PKSge_uit(int Geel) // Led 2 uit
//Serialprint("PKSpr ");
{
digitalWrite(Geel, LOW);
delay(1000);
Ge=(4);
}

void Show() // Printen om te testen
{
Serial.println ("Show ");
Serial.print (A);
Serial.println (" = TestLed aan, ");
Serial.print (U);
Serial.print (" = TestLed uit, ");
Serial.print (Ge);
Serial.println (" = Geel aan ");
Serial.print (Ro);
Serial.println (" = Rood uit ");

}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: void toepassen en ( Printen op scherm)

Berichtdoor Redundant » 18 Aug 2014, 11:11

Sorry, Nico. Ik heb gereageerd in "Duimwielschakelaars

Daarom hier even een kopie van je antwoord

Martin je moet bij die code tags code2=cpp zetten dan krijg je deze listing. (met regelnummers ervoor, opm Martin)
cpp code


// LCD Scherm
#include <LiquidCrystal.h>
LiquidCrystal lcd(48, 49, 47, 46, 45, 44); // select the pins used on the LCD panelLiquidCrystal
int backLight = 200; // LCD Panel Backlight LED connected to digital pin 10
int LightLevel = 255; // Initialise light full on



int aan=0;
int Uit=0;
int Ge=0;
int Geaan=0;
int Geuit=0;
int Ro=0;
int Roaan=0;
int Rouit=0;

void setup(){ // setup begin //======================================
Serial.begin(9600);

pinMode(10, OUTPUT);
pinMode(11, OUTPUT); // Led 2
pinMode(12, OUTPUT);
pinMode(13, OUTPUT); // Standaard Led


LedAan(13); // Standaard Led aan
// delay(1000);
LedUit(13); // Standaard Led uit
// delay(1000);
PKSge_aan(10); // Led 2 Gele Led aan
// delay(1000);
PKSge_uit(10); // Led 2 Gele Led uit
// delay(1000);
PKSRo_aan(11); // Led 2 Gele Led aan
// delay(1000);
PKSRo_uit(11); // Led 2 Gele Led uit
// delay(1000);

Show(); // Printen om te testen
delay(1000);

} // setup eind //===================================================


void loop() { // void loop() begin //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{
//LCD
lcd.begin(16,2); // Start Lcd Library
}
} // void loop() eind //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// ==========================================
void LedAan(int lampje) { // Standaard Led
lcd.setCursor(0,1);
digitalWrite(lampje, HIGH);
lcd.print("Led aan");
lcd.print(" ");
// Serial.println("Led aan ");
delay(1000);
aan=1;
}

void LedUit(int lampje) { // Standaard Led
lcd.setCursor(0,1);
lcd.print("Led Uit");
lcd.print(" ");
digitalWrite(lampje, LOW);
delay(1000);
Uit=2;
}

// ==========================================
void PKSge_aan(int Geel) { // Led 2 aan
lcd.setCursor(0,1);
lcd.print("Geel aan");
lcd.print(" ");
digitalWrite(Geel, HIGH);
delay(1000);
Geaan=3;
}

void PKSge_uit(int Geel) { // Led 2 uit
lcd.setCursor(0,1);
lcd.print("Geel uit");
lcd.print(" ");
digitalWrite(Geel, LOW);
delay(1000);
Geuit=4;
}


// ===========================================

void PKSRo_aan(int Rood) { // Led 2 aan
lcd.setCursor(0,1);
lcd.print("Rood aan");
lcd.print(" ");
digitalWrite(Rood, HIGH);
delay(1000);
Roaan=5;
}

void PKSRo_uit(int Rood) { // Led 2 uit
lcd.setCursor(0,1);
lcd.print("Rood uit");
lcd.print(" ");
digitalWrite(Rood, LOW);
delay(1000);
Rouit=6;
}

// ===========================================

void Show() // Begin Printen om te testen
{
Serial.print ("Show ");
Serial.println (" ");

Serial.print (aan);
Serial.println (" = TestLed aan, ");
Serial.print (Uit);
Serial.println (" = TestLed uit, ");
Serial.print (Geaan);
Serial.println (" = Geel aan ");
Serial.print (Geuit);
Serial.println (" = Geel uit ");
Serial.print (Roaan);
Serial.println (" = Rood aan ");
Serial.print (Rouit);
Serial.println (" = Rood uit ");
Serial.println ("Einde Programma ");
lcd.setCursor(0,1);
lcd.print("Einde Programma ");
} // Einde Printen om te testen

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: void toepassen en ( Printen op scherm)

Berichtdoor Redundant » 18 Aug 2014, 11:33

Hoi, Nico.
Ik heb getracht om e.e.a. te herschikken.
Ik hoop dat het nu beter is wat betreft structuur etc.
Het is wel goed werkend zo. De bedoeling is om te oefenen voor ik weer met het CNC-programma verder ga om dit te verbeteren.
gr, Martin

cpp code
// LCD Scherm
#include <LiquidCrystal.h>
LiquidCrystal lcd(48, 49, 47, 46, 45, 44); // select the pins used on the LCD panelLiquidCrystal
int backLight = 200; // LCD Panel Backlight LED connected to digital pin 10
int LightLevel = 255; // Initialise light full on

int Aan=0;
int Uit=0;
int Ge=0;
int GeAan=0;
int GeUit=0;
int Ro=0;
int RoAan=0;
int RoUit=0;


void setup(){ // setup begin //======================================
Serial.begin(9600);

pinMode(10, OUTPUT);
pinMode(11, OUTPUT); // Led 2
pinMode(12, OUTPUT);
pinMode(13, OUTPUT); // Standaard Led

{
//LCD
lcd.begin(16,2); // Start Lcd Library
}

LedAan(13); // Standaard Led aan
// delay(1000);
LedUit(13); // Standaard Led uit
// delay(1000);
PKSge_Aan(10); // Led 2 Gele Led aan
// delay(1000);
PKSge_Uit(10); // Led 2 Gele Led uit
// delay(1000);
PKSRo_Aan(11); // Led 2 Gele Led aan
// delay(1000);
PKSRo_Uit(11); // Led 2 Gele Led uit
// delay(1000);
lcd.setCursor(0,0);
lcd.print(" ");
Show(); // Printen om te testen

delay(1000);

} // setup eind //===================================================



void loop() { // void loop() begin //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

} // void loop() eind //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// ==========================================
void LedAan(int lampje) { // Standaard Led
lcd.setCursor(0,0);
digitalWrite(lampje, HIGH);
lcd.print("Led 1 Aan");
delay(1000);
Aan=1;
}

void LedUit(int lampje) { // Standaard Led
lcd.setCursor(0,0);
lcd.print("Led 1 Uit");
digitalWrite(lampje, LOW);
delay(1000);
Uit=2;
}

// ==========================================
void PKSge_Aan(int Geel) { // Led 2 aan
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Geel 2 Aan");
lcd.print(" ");
digitalWrite(Geel, HIGH);
delay(1000);
GeAan=3;
}

void PKSge_Uit(int Geel) { // Led 2 uit
lcd.setCursor(0,1);
lcd.print("Geel 2 Uit");
lcd.print(" ");
digitalWrite(Geel, LOW);
delay(1000);
GeUit=4;
}


// ===========================================

void PKSRo_Aan(int Rood) { // Led 2 aan
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("Rood 3 Aan");
lcd.print(" ");
digitalWrite(Rood, HIGH);
delay(1000);
RoAan=5;
}

void PKSRo_Uit(int Rood) { // Led 2 uit
lcd.setCursor(0,0);
lcd.print("Rood 3 Uit");
lcd.print(" ");
digitalWrite(Rood, LOW);
delay(1000);
RoUit=6;
}

// ===========================================

void Show() // Begin Printen om te testen
{
Serial.print ("Show ");
Serial.println (" ");

Serial.print (Aan);
Serial.println (" = TestLed Aan, ");
Serial.print (Uit);
Serial.println (" = TestLed Uit, ");
Serial.print (GeAan);
Serial.println (" = Geel Aan ");
Serial.print (GeUit);
Serial.println (" = Geel Uit ");
Serial.print (RoAan);
Serial.println (" = Rood Aan ");
Serial.print (RoUit);
Serial.println (" = Rood Uit ");
Serial.println ("Einde Programma ");
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Einde Programma ");
} // Einde Printen om te testen

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

Re: void toepassen en ( Printen op scherm)

Berichtdoor nicoverduin » 18 Aug 2014, 16:40

Gaat de goeie kant op... maar...:
Alles wat op het zelfde nivo zit kun je gewoon links uitlijnen.
En als je iets wil hebben dat zich herhaald, dan hoort dat thuis in de loop(). Nu doe je alles in setup(), terwijl je (als ik je eerdere post begrijp) eigenlijk wil dat zich deze bijvoorbeeld herhaald.
loop() is de routine waar je dat dan moet doen. En in jouw geval als je wilt dat het met het indrukken van een knop gebeurt dan zou je de volgende stappen in de loop kunnen zetten:
a) lees knop
b) is deze ingedrukt
c) zo ja zet al die ledjes aan zoals nu in de setup()
d) Nee doe niets

Als de loop() aan zijn einde is, dan begint hij gewoon opnieuw met de eerste instructie van de loop().

Verder zet je een accolade voor LCD.begin() en een erna. Waarom?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: void toepassen en ( Printen op scherm)

Berichtdoor shooter » 19 Aug 2014, 11:10

een volgende is natuurlijk om dat void te vervangen door een int of iets dergelijks, dan kun je met return iets teruggeven (bijvoorbeeld een waarde) aan de aanroeper.

omdat het niet mogelijk is om meerdere waarden terug te krijgen met een functieaanroep kun je wel een structure gebruiken
diezelfde structure kun je ook gebruiken om een ingewikkelde variable te maken of zelfs een array.


cpp code
typedef struct //defining structure for the sequence
{
unsigned long nextsteptime;
int motornumber;
int motormode;
int motorspeed;
unsigned long motortime;
} structureseq;
paul deelen
shooter@home.nl

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: void toepassen en ( Printen op scherm)

Berichtdoor Redundant » 25 Aug 2014, 14:04

Hoi, ik ben Zaterdag naar Hack42 geweest in Schaarsbergen (Arnhem) voor een beginnerscursus Arduino.
Een geweldige fijne dag van 2 uur tot s'avonds laat als je wilde. 7 bezoekers die eigen lijk van niets wisten tot mensen die al wel in ander programmeertalen werkten.
Veel geleerd uiteraard.
Ik denk dat ik nu eerst de juiste poorten moet bepalen voor input en analoog bijgaand enkele foto's, o.a. Excell en de reeds grootdeels gevulde behuizing.

Ook zal ik een nieuwe opzet maken voor het programma zoals hier eerder is besproken.

Straks meer.
Afbeelding
Afbeelding
Afbeelding

Wie een grotere foto wil of het Excell sheet wil, kan mij mailen.

Martin Jansen
martin@boetisa.nl

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: void toepassen en ( Printen op scherm)

Berichtdoor Redundant » 28 Aug 2014, 21:17

Hoi, ik ben opnieuw begonnen en heb nu alleen de beide wachtregels gemaakt while (! digitalRead(Drukknop));
Dit werkt zoals ik wil, wachten tot er op de knop is gedrukt.
Maar als ik de knop te lang indruk gaat de Led Knipperen. Dat mag uiteraard niet.

cpp code
// Door de 300 Ms us is de werking OK.  Als de drukknop ingedrukt wordt gehouden, gaat de Led knipperen.
// Dat is niet goed.


// LCD Scherm
#include <LiquidCrystal.h>
LiquidCrystal lcd(48, 49, 47, 46, 45, 44); // select the pins used on the LCD panelLiquidCrystal
int backLight = 200; // LCD Panel Backlight LED connected to digital pin 10
int LightLevel = 255; // Initialise light full on

int Led = 10;
int Drukknop = A0;

void setup ()
{
Serial.begin(9600);

pinMode(Led, OUTPUT); // TestLed
pinMode(Drukknop, INPUT ); // Drukknop poort 1 PWM_TX0

//LCD
lcd.begin(16,2); // Start Lcd Library

}


void loop()
{
lcd.setCursor(0,0);
lcd.print("Kies Programma ");
lcd.setCursor(0,1);
lcd.print("Enter Witte knop");
while (! digitalRead(Drukknop));
delay(300); // PWM_TX0
digitalWrite(Led, HIGH); // Led Aan = alleen om te testen

lcd.setCursor(0,0);
lcd.print("Aantal Bewerking");
lcd.setCursor(0,1);
lcd.print("Enter Witte knop");
while (! digitalRead(Drukknop));
delay(300); // PWM_TX0
digitalWrite(Led, LOW); // Led Aan = alleen om te testen

// Switch
/*
Hierna loop Switch Case om naar de programmakeuze te gaan.
*/

}

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: void toepassen en ( Printen op scherm)

Berichtdoor shooter » 29 Aug 2014, 19:17

de input moet je pull up maken.
en je zult dus moeten testen of de knop losgelaten is en dan pas mag je naar de volgende gaan, dus er komt een while tussen en ik zie geen {} onder de while staan.
paul deelen
shooter@home.nl

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: void toepassen en ( Printen op scherm)

Berichtdoor Redundant » 29 Aug 2014, 21:12

Er is een Pull Down 15K weerstand aanwezig, werkt goed.
Logisch om er nog een while statement achter te zetten, zonder uitroepteken.
Dat heb ik inmiddels gedaan.

Maar ik heb nu het probleem dat het programma opnieuw is geïnstalleerd om reden dat de com3 poort was verdwenen.
Alles werkt weer, het Board geïnstalleerd, het programmeerapparaat staat nu AVRISP mkll
Foutmelding is nu bij Upload avrdude: error at C:\Program Files (x86)\Arduino/hardware/tools/avr/etc/avrdude.conf:332: programmer type must be written as "id_type"
Gezocht op internet zou ArduinoISP moeten zijn. (er wordt om een "id_type" gevraagd)
Getracht ArduinoISP er op te zetten, zelfs Brand Bootloader helpt ook niet.

Wat doe ik fout?

gr, Martin

Volgende

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten