Archief - Arduino project (RFID, LED, RGB en meer)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

d4_ev1l

Legacy Member
Ik heb nog eens de programmering van mijn led cube bekeken, en ben tot de vaststelling gekomen dat ik er nog veel meer mee zou kunnen doen als ik de code wat op punt stel.

dit is het basisprogramma met een paar waardes dat ie doorstuurt naar de 595s:

Code:
#include <system.h>
// Set the device configuration bits
#pragma DATA _CONFIG, _CP_OFF &  _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT

// Tell the compiler the device clock frequency to get the correct delays generated
#pragma CLOCK_FREQ	4000000

// IO's
//Data and clock for the 595's

volatile bit data1 	@ PORTB.0;
volatile bit clk1 	@ PORTB.1;
volatile bit data2 	@ PORTB.2;
volatile bit clk2 	@ PORTB.3;
volatile bit data3 	@ PORTB.4;
volatile bit clk3 	@ PORTB.5;

volatile bit clk4	@ PORTA.0;
volatile bit data4	@ PORTA.1;
volatile bit latchv	@ PORTA.2;
volatile bit latchh	@ PORTA.3;

void load_bytev(char dat1, char dat2, char dat3);
void load_byteh(char dat4);

void main(){
	trisa = 0;
	porta = 0;
	trisb = 0;
	portb = 0;
	
while(1){
             load_byteh(0b11111);
             load_bytev(0b10001, 0b0, 0b10000);
             portb.6 = 1;
                  delay_ms(1000);
             portb.6 = 0;
             load_bytev(0b10, 0b10000010, 0b10000000);
                  delay_ms(1000);
             load_bytev(0b100, 0b1000100, 0b1000000);
                  delay_ms(1000);
             load_bytev(0b101000, 0b00000, 0b000101);
                  delay_ms(1000);
}

}	
void load_bytev(char dat1, char dat2, char dat3){

	char i = 0;

	for (i = 0; i < 8; i++){
		data1 = (dat1 & 0x01);
		dat1 = dat1 >> 1;
		clk1 = 0;
		clk1 = 1;
	}

	for (i = 0; i < 8; i++){
		data2 = (dat2 & 0x01);
		dat2 = dat2 >> 1;
		clk2 = 0;
		clk2 = 1;
	}

	for (i = 0; i < 8; i++){
		data3 = (dat3 & 0x01);
		dat3 = dat3 >> 1;
		clk3 = 0;
		clk3 = 1;
	}

latchv = 1;
delay_us(50);
latchv = 0;
}
void load_byteh(char dat4){

	char i = 0;

	for (i = 0; i < 8; i++){
		data4 = (dat4 & 0x01);
		dat4 = dat4 >> 1;
		clk4 = 0;
		clk4 = 1;
	}
latchh = 1;
delay_us(50);
latchh = 0;
}

De 24 bits die naar load_bytev() gaan zijn 24 van de 25 kolommen van de led cube(de 25e is portb.6)

de 5bits die naar load_byteh() worden gestuurd zin de 5 rijen.

leds staan horizontaal als volgt: (dat#, bit #)
1,1 1,6 2,3 2,8 3,5
1,2 1,7 2,4 3,1 3,6
1,3 1,8 2,5 3,2 3,7
1,4 2,1 2,6 3,3 3,8
1,5 2,2 2,7 3,4 portb.6

Ik zou graag willen een sinusgolf erin programmeren, maar de effecten die ik er tot nu toe in gestoken heb zijn allemaal opeenvolgende commando's die ik zelf moeten programmeren heb, dus niks wiskundige formules fzo.

Heeft iemand een idee hoe ik dat er moet inkrijgen?

nigel555

Legacy Member
d4_ev1l zei:
Ik heb nog eens de programmering van mijn led cube bekeken, en ben tot de vaststelling gekomen dat ik er nog veel meer mee zou kunnen doen als ik de code wat op punt stel.

dit is het basisprogramma met een paar waardes dat ie doorstuurt naar de 595s:

Code:
#include <system.h>
// Set the device configuration bits
#pragma DATA _CONFIG, _CP_OFF &  _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT

// Tell the compiler the device clock frequency to get the correct delays generated
#pragma CLOCK_FREQ	4000000

// IO's
//Data and clock for the 595's

volatile bit data1 	@ PORTB.0;
volatile bit clk1 	@ PORTB.1;
volatile bit data2 	@ PORTB.2;
volatile bit clk2 	@ PORTB.3;
volatile bit data3 	@ PORTB.4;
volatile bit clk3 	@ PORTB.5;

volatile bit clk4	@ PORTA.0;
volatile bit data4	@ PORTA.1;
volatile bit latchv	@ PORTA.2;
volatile bit latchh	@ PORTA.3;

void load_bytev(char dat1, char dat2, char dat3);
void load_byteh(char dat4);

void main(){
	trisa = 0;
	porta = 0;
	trisb = 0;
	portb = 0;
	
while(1){
             load_byteh(0b11111);
             load_bytev(0b10001, 0b0, 0b10000);
             portb.6 = 1;
                  delay_ms(1000);
             portb.6 = 0;
             load_bytev(0b10, 0b10000010, 0b10000000);
                  delay_ms(1000);
             load_bytev(0b100, 0b1000100, 0b1000000);
                  delay_ms(1000);
             load_bytev(0b101000, 0b00000, 0b000101);
                  delay_ms(1000);
}

}	
void load_bytev(char dat1, char dat2, char dat3){

	char i = 0;

	for (i = 0; i < 8; i++){
		data1 = (dat1 & 0x01);
		dat1 = dat1 >> 1;
		clk1 = 0;
		clk1 = 1;
	}

	for (i = 0; i < 8; i++){
		data2 = (dat2 & 0x01);
		dat2 = dat2 >> 1;
		clk2 = 0;
		clk2 = 1;
	}

	for (i = 0; i < 8; i++){
		data3 = (dat3 & 0x01);
		dat3 = dat3 >> 1;
		clk3 = 0;
		clk3 = 1;
	}

latchv = 1;
delay_us(50);
latchv = 0;
}
void load_byteh(char dat4){

	char i = 0;

	for (i = 0; i < 8; i++){
		data4 = (dat4 & 0x01);
		dat4 = dat4 >> 1;
		clk4 = 0;
		clk4 = 1;
	}
latchh = 1;
delay_us(50);
latchh = 0;
}

De 24 bits die naar load_bytev() gaan zijn 24 van de 25 kolommen van de led cube(de 25e is portb.6)

de 5bits die naar load_byteh() worden gestuurd zin de 5 rijen.

leds staan horizontaal als volgt: (dat#, bit #)
1,1 1,6 2,3 2,8 3,5
1,2 1,7 2,4 3,1 3,6
1,3 1,8 2,5 3,2 3,7
1,4 2,1 2,6 3,3 3,8
1,5 2,2 2,7 3,4 portb.6

Ik zou graag willen een sinusgolf erin programmeren, maar de effecten die ik er tot nu toe in gestoken heb zijn allemaal opeenvolgende commando's die ik zelf moeten programmeren heb, dus niks wiskundige formules fzo.

Heeft iemand een idee hoe ik dat er moet inkrijgen?

goh dit a ik eens moeten grondig bestuderen voor ik je daar op kan antwoorden.

Ik vermoed dat het niet extreem complex moet zijn. En naar wat stuur je dit door van board? Of is het rechtstreeks met pic's?



verder een update van heo het bij mij staat :) :p

Ik heb mezelf blijkbaar de duvel aangedaan met Windows 8.
Namelijk het instaleren van de inf files met de drivers geeft problemen.

Not signed drivers installeren wil niet werken. Heb al paar dingen geprobeerd maar tot nu toe krijg ik dus mijn arduino's niet meer in werking door Windows 8 -_-

Man man het stond al op een slecht blaadje bij mij de Windows 8 en hoe langer het duurt hoe slechter het word.....

d4_ev1l

Legacy Member
pic zit rechtstreeks, maar het was gewoon om es te horen hoe jullie dit zouden aansturen qua code.
Heb al zitten denken om het in nen array te steken, ma da ga ni veel oplossen :-)

nigel555

Legacy Member
d4_ev1l zei:
pic zit rechtstreeks, maar het was gewoon om es te horen hoe jullie dit zouden aansturen qua code.
Heb al zitten denken om het in nen array te steken, ma da ga ni veel oplossen :-)

aah :)
ja het is wel een leuke breinbreker :D

Ik denk dat in een array steken een optie is die wel zou kunnen werken. Kan je kijken om met een formule te werken om te zeggen welke posities moeten branden.

Maar eenvoudiger zou het het geheel niet maken :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan