hulp voor beginnende

algemene C code
Berichten: 3
Geregistreerd: 02 Mrt 2014, 03:43

hulp voor beginnende

Berichtdoor marcreko » 02 Mrt 2014, 15:31

hallo beste forumleden,
ik ben net begonnen met zelfstudie en heb enkele vragen. Ik hoop een begrijpende ziel te vinden om wat uitleg te geven
wie het ziet zitten kan bijgevoegde sketch eens doorlopen de vragen staan naast de zaken waar ik wat meer wil over weten over het hoe en waarom
ik volg de programmeer manual van Arduino
Code: Alles selecteren
//kleurvolgorde oranje paars geel groen grijs rood blauw common led1 op 8 common led2 op 9


int k;                                // staat k hier voor de variabele getallen en staat deze helemaal bovenaan omdat k in het hele program gebruikt wordt?

void spring()
{
  if (k==0) {getal0();} else{}
  if (k==1) {getal1();} else{}
  if (k==2) {getal2();} else{}
  if (k==3) {getal3();} else{}
  if (k==4) {getal4();} else{}
  if (k==5) {getal5();} else{}
  if (k==6) {getal6();} else{}
  if (k==7) {getal7();} else{}
  if (k==8) {getal8();} else{}
  if (k==9) {getal9();} else{}
}


void getal1()                        // als getal 1 is waar pin 2 en 3 is HIGH
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

void getal2()
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(7, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
}

void getal3()
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
}

void getal4()
{
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

void getal5()
{
digitalWrite(1, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}

void getal6()
{
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(5, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(1, HIGH);
}

void getal7()
{
digitalWrite(1, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
}

void getal8()
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}

void getal9()
{
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(1, HIGH);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

void getal0()
{
digitalWrite(1, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}

void uit()
{
  for (int r=1; r<8; r++)                                            // voorwat staat die r en wat doet men hier
  {
   digitalWrite(r, LOW);
  }
}


void setup() {
  // Pin 1 tm 9 als uitgang:                                        // als ik dit lees is dit een bereik van 1 tot kleiner dan 10?
for (int i=1; i<10; i++)                                            // waarom staat hier i++
{
pinMode(i, OUTPUT);                                                 // pinnen 1 tot en met 9 zijn OUTPUT
}
}


void loop()
{

  for (int d2=0; d2<10; d2++)                                       // waar en hoe wordt hier het verschil gemaakt tussen eenheden en tientallen?
  { 
    for (int d1=0; d1<10; d1++)
    {
       for (int t=1; t<101; t++)
       {     
        //display1
        digitalWrite(8, LOW);
        k=d1;                                   
        spring();
        delay (1);
        digitalWrite(8, HIGH);
        uit();
        //display2
        digitalWrite(9, LOW);
        k=d2;
        spring();
        delay (1);
        digitalWrite(9, HIGH);
        uit();
       }
    }
  }
}







 

 



Alvast bedankt op voorhand

Advertisement

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

Re: hulp voor beginnende

Berichtdoor nicoverduin » 02 Mrt 2014, 21:06

Dit is toch gewoon op het internet te vinden? C/C++ tutorial..... ff googelen.....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: hulp voor beginnende

Berichtdoor shooter » 08 Mrt 2014, 11:19

//kleurvolgorde oranje paars geel groen grijs rood blauw common led1 op 8 common led2 op 9


int k; // staat k hier voor de variabele getallen en staat deze helemaal bovenaan omdat k in het hele program gebruikt wordt?
k is inderdaad een variable die hier gedefinieerd word.
en ja kan overal gebruikt worden.

subroutine zet ik meestal onderaan maar ach ieder eigen manier

void spring()
{
if (k==0) {getal0();} else{}
if (k==1) {getal1();} else{}
if (k==2) {getal2();} else{}
if (k==3) {getal3();} else{}
if (k==4) {getal4();} else{}
if (k==5) {getal5();} else{}
if (k==6) {getal6();} else{}
if (k==7) {getal7();} else{}
if (k==8) {getal8();} else{}
if (k==9) {getal9();} else{}
}


void getal1() // als getal 1 is waar pin 2 en 3 is HIGH
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

void getal2()
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(7, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
}

void getal3()
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
}

void getal4()
{
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

void getal5()
{
digitalWrite(1, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}

void getal6()
{
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(5, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(1, HIGH);
}

void getal7()
{
digitalWrite(1, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
}

void getal8()
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}

void getal9()
{
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(1, HIGH);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

void getal0()
{
digitalWrite(1, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}

void uit()
{
for (int r=1; r<8; r++) // voorwat staat die r en wat doet men hier
de r is een variabele om te schrijven naar een digitalwrite hieronder



{
digitalWrite(r, LOW); begint met 1 die wordt dan uitgezet, dan 2 etc tot en met 7

}
}


void setup() {
// Pin 1 tm 9 als uitgang: // als ik dit lees is dit een bereik van 1 tot kleiner dan 10?
for (int i=1; i<10; i++) // waarom staat hier i++
begint met 1
zolang i kleiner is dan 10 dus 9 is de laatste
i++ betekent 1 bijtellen

{
pinMode(i, OUTPUT); // pinnen 1 tot en met 9 zijn OUTPUT
}
}


void loop()
{

for (int d2=0; d2<10; d2++) // waar en hoe wordt hier het verschil gemaakt tussen eenheden en tientallen?
d2 is tientallen {
for (int d1=0; d1<10; d1++)
d1 is eenheden {
for (int t=1; t<101; t++)
deze telt van 1 tot 100
{
//display1
digitalWrite(8, LOW); eenheden wordt aangezet (de kathode wordt open gezet
k=d1;
eenheden multiplexer
spring(); hier worden de diverse ledjes van de eenheden aangezet
delay (1); even wachten
digitalWrite(8, HIGH); eenheden uitzetten
uit(); ledjes uit
//display2
digitalWrite(9, LOW); tientallen aan
k=d2;
spring(); ledjes aan voor tientallen
delay (1);
digitalWrite(9, HIGH); tientallen uit
uit(); ledjes uit
}
}
}
}

is dus een twee seven segments display die gemultiplexed aangestuurd worden met een 9 uitgangen.
mooi toch

volgende is om de delay te vervangen door een interupt, dan kun je ondertussen nog een hele hoop andere dingen doen.
paul deelen
shooter@home.nl

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

Re: hulp voor beginnende

Berichtdoor shooter » 08 Mrt 2014, 11:25

zag trouwens te laat dat je stilstaande displays wilt, dat kan dus niet met deze multiplexer, dan heb je wat meer poortjes nodig.
je hoeft trouwens alleen de snelle vast te hebben de rest kun je wel multiplexen.
paul deelen
shooter@home.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten