Code probleem

algemene C code
Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Code probleem

Berichtdoor shooter » 22 Mrt 2019, 23:42

je kunt het ook in mblock maken dat is altijd netjes.
en behalve die delays is het prima zo hoor.
je kunt ook define gebruiken vooraan dan kun je zeggen aan of uit.
paul deelen
shooter@home.nl

Advertisement

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Code probleem

Berichtdoor Jeroentjevrij » 23 Mrt 2019, 14:22

Hoe had jij de delays aangepakt dan.

https://github.com/JeroenVrij/3x3x3-cube-under-const

En ben gaan zoeken hoe je dat Aan en Uit bedoeld maar kom er niet echt achter.

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

Re: Code probleem

Berichtdoor shooter » 23 Mrt 2019, 15:11

delays moet je oplossen met een timer millis() functie die draait altijd.
dan kun je dus ergens naar toe springen zoals elke seconde de tijd laten zien terwijl je iets anders doet zoals communicatie en zo.
kijk maar eens naar blink without delay (staat in de voorbeelden.
#define aan LOW
#define uit HIGH
nou kun je dus overal aan gebruiken ipv HIGH.
dat kan dus ook voor je kolommen enz.
#define kolom1 54
dus dan kun je elke keer als je iets met kolom1 wilt doen dat ook invullen ipv een nietszeggend 54
dat maakt het foutzoeken een stuk simpeler.
nu kun je dus maar een layer tegelijk aanzetten.
straks doe je dus alle layers aanzetten en dan telkens voor heel even. jij hebt dus drie layer arrays aanmaken met elke laag apart en die dan bijv 10 millis aanzetten en dan de volgende.
paul deelen
shooter@home.nl

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Code probleem

Berichtdoor Jeroentjevrij » 23 Mrt 2019, 17:01

Ben aan het proberen dat millis te begrijpen.
Zou iemand mij kunnen adviseren
Heb hieronder op zijn goedst een code gemaakt maar weet niet of het zo juist is.
Ik zet hopelijk nu 1 volledige laag aan.
Maar hoe bepaal ik nu hoe lang deze aan blijft.
Code: Alles selecteren
 
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
const int layerPins[] = {11, 12, 13};

int ledState = LOW;             

unsigned long previousMillis = 0;       

const long interval = 1000;           

void setup()
 {
  pinMode(ledPins[9], OUTPUT);
  pinMode(layerPins[2], OUTPUT);
 }

void H(int i)
{
  ledState = digitalRead(i);
   
  if (ledState == HIGH)
  {
    digitalWrite(i, LOW);
  }
  else
  {
    digitalWrite(i, HIGH);
  }
}
void L(int i)
{
  ledState = digitalRead(i);
   
  if (ledState == HIGH)
  {
    digitalWrite(i, LOW);
  }
  else
  {
    digitalWrite(i, HIGH);
  }
}
void loop()
 {
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >=    interval)
 {
  previousMillis = currentMillis;
 }
 L(1);
 digitalWrite(ledPins[9], HIGH);
}

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

Re: Code probleem

Berichtdoor shooter » 25 Mrt 2019, 20:25

je zegt dus if current.....
binnen die {} moet dus ook de opdracht komen dus L(1) dan moet dus jouw layerpin (10) HIGH worden
net zoals een paar ledpins.
en afhankelijk hoe het nu schakeld zou het aan kunnen gaan, dus een schema is wel handig.
en dan anders gaan denken en wel per laag en dan snel achter elkaar, dan kun je animaties gaan maken.
paul deelen
shooter@home.nl

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Code probleem

Berichtdoor Jeroentjevrij » 25 Mrt 2019, 23:17

Dat heb ik nu ook in mijn code.

Code: Alles selecteren

Layer1(); //khatodes laag 1 gaat aan
for (count=0; count<=9; count++)
 {
  Kolom(count);// kolom 1-9 gaan om en om aan
  delay(timer);   //100
 }
Layer2()  // 2 gaat aan en 1 gaat uit

for (count=0; count<=9; count++)
 {
  Kolom(count);// kolom 1-9 gaan om en om aan
  delay(timer);   //100
  Enz....


In een tijd van 2,7 second lopen nu de vlakken van onder naar boven

Heb hieronder de code die ik tot nu toe heb.
Ik probeer hem nog wat netter te krijgen en kleiner.
Ik probeer nog iets te bedenken voor alle pinArrays
En moet nog wat spelen met de delays(afstellen)
Code: Alles selecteren
 
const int pinArray0[] ={2, 3, 4, 5, 6, 7, 8, 9, 10};
const int pinArray1[] ={3, 4, 5, 6, 7, 8, 9, 10};
const int pinArray2[] ={2, 4, 5, 6, 7, 8, 9, 10};
const int pinArray3[] ={2, 3, 5, 6, 7, 8, 9, 10};
const int pinArray4[] ={2, 3, 4, 6, 7, 8, 9, 10};
const int pinArray5[] ={2, 3, 3, 5, 7, 8, 9, 10};
const int pinArray6[] ={2, 3, 4, 5, 6, 8, 9, 10};
const int pinArray7[] ={2, 3, 4, 5, 6, 7, 9, 10};
const int pinArray8[] ={2, 3, 4, 5, 6, 7, 8, 10};
const int pinArray9[] ={2, 3, 4, 5, 6, 7, 8, 9};
const int timer      = 300;
const int t200       = 200;
const int t500       = 500;
int ledState   = 0;
int count      = 0;
long randNumber;

//all pins to output//
void setup()
 {
  randomSeed(analogRead(0));
 {
 for (int i = 2; i <= 13; i++)
 {
  pinMode(i, OUTPUT);
 }
 for (int i = 11; i <= 13; i++)
 {
  digitalWrite(i, LOW);
 }
}}

//Kolom(pinnumber) sets 1 high 8 low//
void Kolom(int number)
 {
 switch (number)
 {
 case 1:
  digitalWrite(2, HIGH);
  digitalWrite(pinArray1[8], LOW);
 break;
 case 2:
  digitalWrite(3, HIGH);
  digitalWrite(pinArray2[8], LOW);
 break;
 case 3:
  digitalWrite(4, HIGH);
  digitalWrite(pinArray3[8], LOW);
 break;
 case 4:
  digitalWrite(5, HIGH);
  digitalWrite(pinArray4[8], LOW);
 break;
 case 5:
  digitalWrite(6, HIGH);
  digitalWrite(pinArray5[8], LOW);
 break;
 case 6:
  digitalWrite(7, HIGH);
  digitalWrite(pinArray6[8], LOW);
 break;
 case 7:
  digitalWrite(8, HIGH);
  digitalWrite(pinArray7[8], LOW);
 break;
 case 8:
  digitalWrite(9, HIGH);
  digitalWrite(pinArray8[8], LOW);
 break;
 case 9:
  digitalWrite(10, HIGH);
  digitalWrite(pinArray9[8], LOW);
 break;
 }

}
void Layer(int number)
 {
 switch (number)
 {
 case 1:
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
 break;
 case 2:
  digitalWrite(12, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(13, LOW);
 break;
 case 3:
  digitalWrite(13, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(11, LOW);
}
}
void loop()
{
//random gaan er leds branden
//eerst laag voor laag daarna random
  Layer(1);
 for (int i = 0; i <= 250; i++)
 {
  randNumber = random(1, 9);
  Kolom(randNumber);
  randNumber = random(300,1000);
  delay(randNumber);
 }
  Layer(2);
 for (int i = 0; i <= 250; i++)
 {
  randNumber = random(1, 9);
  Kolom(randNumber);
  randNumber = random(300,1000);
  delay(randNumber);
 }
  Layer(3);
 for (int i = 0; i <= 250; i++)
 {
  randNumber = random(1, 9);
  Kolom(randNumber);
  randNumber = random(300,1000);
  delay(randNumber);
 }
 for (int i = 0; i <= 250; i++);
 {
  randNumber = random(1, 9);
  Kolom(randNumber);
  randNumber = random(1, 3);
  Layer(randNumber);
  randNumber = random(300, 1000);
  delay(randNumber);
 }
//knight rider effect
//van onder naar boven en terug
  digitalWrite(pinArray0[9], LOW);
  Layer(1);
 for (count=0;count<9;count++)
 {
  digitalWrite(pinArray0[count], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count+1], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count], LOW);
  delay(timer*2);
 }
  Layer(2);
 for (count=9;count>0;count--)
 {
  digitalWrite(pinArray0[count], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count-1], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count], LOW);
  delay(timer*2);
 }
  Layer(3);
 for (count=0;count<9;count++)
 {
  digitalWrite(pinArray0[count], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count+1], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count], LOW);
  delay(timer*2);
 }
 for (count=9;count>0;count--)
 {
  digitalWrite(pinArray0[count], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count-1], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count], LOW);
  delay(timer*2);
 }
  Layer(2);
 for (count=0;count<9;count++)
 {
  digitalWrite(pinArray0[count], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count+1], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count], LOW);
  delay(timer*2);
 }
  Layer(1);
 for (count=9;count>0;count--)
 {
  digitalWrite(pinArray0[count], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count-1], HIGH);
  delay(timer);
  digitalWrite(pinArray0[count], LOW);
  delay(timer*2);
 }
  Layer(1);
 for (int i = 0; i <= 100; i++);
 {
  Kolom(1);
  delay(500);
  Kolom(2);
  delay(500);
  Kolom(3);
  delay(500);
 }
 for (int i = 0; i <= 100; i++);
 {
  Kolom(4);
  delay(500);
  Kolom(5);
  delay(500);
  Kolom(6);
  delay(500);
 }
 for (int i = 0; i <= 100; i++);
 {
  Kolom(7);
  delay(500);
  Kolom(8);
  delay(500);
  Kolom(9);
  delay(500);
 }
  Layer(2);
 for (int i = 0; i <= 100; i++);
 {
  Kolom(1);
  delay(500);
  Kolom(2);
  delay(500);
  Kolom(3);
  delay(500);
 }
 for (int i = 0; i <= 100; i++);
 {
  Kolom(4);
  delay(500);
  Kolom(5);
  delay(500);
  Kolom(6);
  delay(500);
 }
 for (int i = 0; i <= 100; i++);
 {
  Kolom(7);
  delay(500);
  Kolom(8);
  delay(500);
  Kolom(9);
  delay(500);
 }
  Layer(3);
 for (int i = 0; i <= 100; i++);
 {
  Kolom(1);
  delay(500);
  Kolom(2);
  delay(500);
  Kolom(3);
  delay(500);
 }
 for (int i = 0; i <= 100; i++);
 {
  Kolom(4);
  delay(500);
  Kolom(5);
  delay(500);
  Kolom(6);
  delay(500);
 }
 for (int i = 0; i <= 100; i++);
 {
  Kolom(7);
  delay(500);
  Kolom(8);
  delay(500);
  Kolom(9);
  delay(500);
 }
 }

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

Re: Code probleem

Berichtdoor shooter » 26 Mrt 2019, 00:05

heb je een schema?
paul deelen
shooter@home.nl

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Code probleem

Berichtdoor Jeroentjevrij » 26 Mrt 2019, 00:24

Jazeker heb alleen geen npn transistors gebruikt maar mosfets
Dus ik kan zo ie zo een hele laag laten branden
fv6FAq6.jpg
fv6FAq6.jpg (12.33 KiB) 6913 keer bekeken

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

Re: Code probleem

Berichtdoor shooter » 26 Mrt 2019, 23:21

ja schema is prima, en ja je kunt dus telkens een laag tegelijkaan zetten en daar dan bepaalde leds op aan zetten. voor 0,1 seconde
dan de volgende laag aanzetten enzo voort.
kijk maar naar de youtube voorbeelden die hierboven ergens staan.
paul deelen
shooter@home.nl

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten