freier Bannerplatz

Sie sind nicht angemeldet.

21

Samstag, 17. Oktober 2009, 13:29

Danke für die schnelle Antwort ;-)

Also, das Kabel habe ich an sich fertig, nur verstehe ich nicht wo die andere Seite an die Platine dran muss.

Ein noch viel größeres Problem dürfte wohl die Software sein, dazu habe ich bisher nur sehr wenig gefunden.

Semmel

Profi

  • »Semmel« ist der Autor dieses Themas

Beiträge: 1 014

Wohnort: Bonn

Beruf: Schüler

Danksagungen: 1039

  • Nachricht senden

22

Samstag, 17. Oktober 2009, 13:33

das Kabel kommt an den Atmega, hierran:



jetzt musst du nurnoch die einzelnen leitungen dem namen nach anschließen...
Intel Core i7 930 4x 2,8 GHZ ║ Wasserkühlung mit 2x 240 radis ║ ASUS Rampage II GENE ║6 GB DDR3 1333er Ram ║XFX HD5850 Black Edition ║120 GB SSD von OCZ ║OCZ Stealth x Stream 600W║24" Widescreen LCD LG ║19" LCD LG║ Und das Case: Projekt: DICE

23

Montag, 19. Oktober 2009, 20:05

Das hab ich glatt übersehen auf dem Schaltplan. danke.

Ich bin jetzt mit der kompletten Hardware fertig.

Demnach ist mein aktuelles Problem die Software.

Hast du es geschafft etwas auf den Atmega flashen?

Wenn ja, welche Software hast du verwendet und welche Animation hast du genommen?

So wie ich das verstanden habe braucht man dazu ein fertig kompiliertes HEX-File, das aus den .c-Programmen erstellt wurde.

Ich habe mir die kompletten Dateien von hier runtergeladen und die .h-Dateien in den include-Ordner von Dev-C++ kopiert.

Wenn ich jetzt jedoch eines dieser C-Programme kompilieren will, kommen die ganze Zeit nur Fehlermeldungen wie:
[Linker error] undefined reference to `setpixel3d'

Der Code in der basicAnimations.c lautet wie folgt

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
#include "pixel.h"
#include "util.h"
#include "config.h"
#include "borg_hw.h"
#include "joystick.h"

void growingCubeFilled() {
	unsigned char x, y, z;
	unsigned char min = 3, max = 4;
	while (min < NUM_PLANES && max < NUM_PLANES) {
		for (x = min; x <= max; x++) {
			for (y = min; y <= max; y++) {
				for (z = min; z <= max; z++) {
					setpixel3d((pixel3d){x,y,z}, 3);
				}
			}
		}
		wait(150);
		min--;
		max++;
	}
	min = 0;
	max = 7;
	while (min < 5 && max > 3) {
		for (x = min; x <= max; x++) {
			for (y = min; y <= max; y++) {
				for (z = min; z <= max; z++) {
					if (x == min || x == max || y == min || y == max || z == min || z == max)
						setpixel3d((pixel3d){x,y,z}, 0);
				}
			}
	
		}
		wait(150);
		min++;
		max--;
	}	
}




void coolAnim() {
	unsigned char x, y, z;
	unsigned char min = 3, max = 4;
	while (min < NUM_PLANES && max < NUM_PLANES) {
		for (x = 0; x <= 8; x++) {
			for (y = 0; y <= 8; y++) {
				for (z = 0; z <= 8; z++) {
					if (x == min || x == max || y == min || y == max || z == min || z == max)
						setpixel3d((pixel3d){x,y,z}, 3);
					else 
						setpixel3d((pixel3d){x,y,z}, 0);
				}
			}
		}
		wait(150);
		min--;
		max++;
	}
	min = 0;
	max = 7;
	while (min < 5 && max > 3) {
		for (x = 0; x <= 8; x++) {
			for (y = 0; y <= 8; y++) {
				for (z = 0; z <= 8; z++) {
					if (x == min || x == max || y == min || y == max || z == min || z == max)
						setpixel3d((pixel3d){x,y,z}, 3);
					else 
						setpixel3d((pixel3d){x,y,z}, 0);
				}
			}
	
		}
		wait(150);
		min++;
		max--;
	}	
}



void movingArrows() {
 	unsigned char i, j, cnt;
 	for (cnt = 0; cnt < 100; cnt++) {
     	shift3d(up);
     	for (i = 0; i < NUM_ROWS; i++) {
         	for (j = 0; j < NUM_COLS; j++) {
             	setpixel3d((pixel3d) {i, j, 0}, 
				 	(j == cnt%4 && i >= cnt%4 && i < 7 - cnt%4) ||
				 	(j == 7 - cnt%4 && i >= cnt%4 && i < 7 - cnt%4) ||
				 	(i == cnt%4 && j >= cnt%4 && j < 7 - cnt%4) ||
				 	(i == 7 - cnt%4 && j >= cnt%4 && j < 7 - cnt%4)
				 	? cnt%3+1:0);
         	}
     	}
     	wait(120);
 	}
 	clear_screen(0);
}



#define BWIDTH 8
void fadedPlaneScan(direction dir, unsigned char i)
{
		if (i < BWIDTH) set_plane(dir, i, 3);
		if (i >= 1 && i < BWIDTH+1) set_plane(dir, i-1, 2);
		if (i >= 2 && i < BWIDTH+2) set_plane(dir, i-2, 1);
		if (i >= 3 && i < BWIDTH+3) set_plane(dir, i-3, 0);
}

void planeAnimation2(unsigned char ms)
{
	unsigned char i, j; 
	for (j = 0; j < 4; ++j) {
		for(i=0; i < BWIDTH + 3; ++i) {
			fadedPlaneScan(left, i);
			fadedPlaneScan(down, i);
			fadedPlaneScan(back, i);
			wait(ms);
		}
		
		for(i=0; i < BWIDTH + 3; ++i) {
			fadedPlaneScan(right, i);
			fadedPlaneScan(up, i);
			fadedPlaneScan(forward, i);
			wait(ms);
		}
	}
}

void waves() {
	signed char data[8][8];
	unsigned char i, j, k;
	for (i = 0; i < 254; i++) {
		for (j = 0; j < 8; j++) {
			data[j][0] = Sin((i+j)%16 *4);
			data[0][j] = Sin((i+j)%16 *4);
		}
		for (j = 1; j < 8; j++) {
			for (k = 1; k < 8; k++) {
				data[j][k] = (data[j-1][k] + data[j][k-1] + data[j-1][k-1])/3;
			}
		}
		for (j = 0; j < 8; j++) {
			for (k = 0; k < 8; k++) {
				setpixel3d((pixel3d){j, k, (data[j][k]+64)/16}, 3);
			}
		}
		wait(80);
		clear_screen(0);
	}
}


void joern1(){
unsigned char i, j, x;
	unsigned char rolr=1 , rol, rol2;
	clear_screen(0);
	for (i = 0; i< 150;i++){
		rol2 = rolr;
		for (j = 0; j < NUM_PLANES; j++) {
			rol = rol2;
        	for (x=0; x < PLANEBYTES; x++) { 
				pixmap[2][j][x] = rol;
				if((rol<<=1)==0) rol = 1;
        	}
        	if((rol2<<=1)==0) rol2 = 1;
		}
		if ((rolr<<=1) == 0) rolr = 1;
		wait(100);
	}
}

void serialStream() {
	unsigned char i, j, k, tmp, esc = 0;
	int count = 0;
	while (count++ < 500) {
		tmp = uart_getc();
		if (esc && tmp == UART_SOF) {
			for (i = 0; i < NUM_LEVELS; i++) {
				for (j = 0; j < NUM_PLANES; j++) {
					for (k = 0; k < PLANEBYTES; k++) {
						if (tmp == UART_ESCAPE) {
							tmp = uart_getc();
							if (tmp == UART_SS) {
								return;
							}
						}
						if (tmp)
						pixmap[i][j][k] = uart_getc();
					}
				} 
			}
			count = 0;
		} else if (esc && tmp == UART_SS) {
			return;
		}
		
		if (tmp == UART_ESCAPE)
			esc = 1;
		else
			esc = 0;
	}
}

void gameOfLife(unsigned char anim, unsigned int delay) {
	unsigned char gen, erg, seven = 1, maxGen = 0;
	signed char x, y, z, neighC, r1 = 3, r2 = 4, r3 = 3, r4 = 2;
	signed char i, j, k;
	char neighs[NUM_PLANES][NUM_ROWS][NUM_COLS];
	
	clear_screen(0);

	switch (anim) {
	case 0:	maxGen = 27;
		setpixel3d((pixel3d){3, 4, 4}, 3);
		setpixel3d((pixel3d){4, 4, 4}, 3);
		setpixel3d((pixel3d){5, 4, 4}, 3);
		break;
	case 1:	maxGen = 30; // other rules
		r3 = 2;
		r4 = 1;
		setpixel3d((pixel3d){3, 4, 4}, 3);
		setpixel3d((pixel3d){4, 4, 4}, 3);
		setpixel3d((pixel3d){5, 4, 4}, 3);
		break;
	case 2: maxGen = 200;
		seven = 0;
		setpixel3d((pixel3d){2, 4, 4}, 3);
		setpixel3d((pixel3d){3, 4, 4}, 3);
		setpixel3d((pixel3d){4, 4, 4}, 3);
		setpixel3d((pixel3d){5, 4, 4}, 3);

		break;

	}
	for (gen = 0; gen < maxGen; gen++) {
		wait(delay);	
		for (x = seven; x < NUM_PLANES; x++) {	
			for (y = seven; y < NUM_ROWS; y++) {
				for (z = seven; z < NUM_COLS; z++) {
					neighC = 0;
					for (i = -1; i < 2; i++) {
						for (j = -1; j < 2; j++) {
							for (k = -1; k < 2; k++) {
								if (i != 0 || j != 0 || k != 0) {
									if ((x+i >= seven && x+i < NUM_COLS) && 
										(y+j >= seven && y+j < NUM_ROWS) && 
										(z+k >= seven && z+k < NUM_PLANES)) {
										erg = get_pixel3d((pixel3d){x+i, y+j, z+k});
									} else {
										erg = 0;
									}
									if (erg && erg != 255) {
										neighC++;	
									}
									//printf("- %d %d %d  neigh=%d erg=%d\n", x+i, y+j, z+k, neighC, erg);
								}
							}
						}
					}
					neighs[x][y][z] = neighC;
				}
			}
		}
		for (x = 1; x < NUM_PLANES; x++) {	
			for (y = 1; y < NUM_ROWS; y++) {
				for (z = 1; z < NUM_COLS; z++) {
					//if (neighs[x][y][z])		
					//	printf("%d %d %d neigh=%d %d\n", x, y, z, neighs[x][y][z], get_pixel3d((pixel3d){x, y, z}));
					if (get_pixel3d((pixel3d){x, y, z})) { // Feld gesetzt
						if (neighs[x][y][z] > r3 || neighs[x][y][z] < r4) {
							setpixel3d((pixel3d){x, y, z}, 0);
						} 
					} else {
						if (neighs[x][y][z] >= r1 && neighs[x][y][z] <= r2) {
							setpixel3d((pixel3d){x, y, z}, 3);
						}
					}
				}
			}
		}
		//printf("============ Gerneration %d \n", gen);
	}			
}

Locutus

Meister

Beiträge: 2 137

Wohnort: TU Dresden

Beruf: Student, Elektrotechnik auf Diplom

Danksagungen: 7432

  • Nachricht senden

24

Dienstag, 20. Oktober 2009, 00:38

zum atmel flashen brauchst nen rechner mit nem com-port od. nem lpt-port u. einen adapter. es gibt auch nen usb-programmer, auch im selber-bau, allerdings muss der eigen-bau auch iwie geflasht werden, sprich, auch hierfür wär einmalig ein com- od. lpt-port notwendig. im übrigen funktionieren unter x64-systemen - zumindest windows - die lpt-lösungen nicht richtig, da keine vernünftigen i/o-treiber lauffähig sind. ergo bleibt nur die com-port-lösung.

du könntest einfach mal bei google googlen nach atmel flashen.

im übrigen: den source-code musst du irgendwie compilieren, ist ja klar. da wäre die frage, in welcher sprache das geschrieben wurd. sieht etwas nach c aus. ergo musst dir einen c-assembler zulegen, der aus dem c-code maschinencode macht. findet sich auch alles bei google (ich glaub da gabs was namens gcc od. so?) auch mal hier gucken: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

wenn du das alles natürlich ohne eigeneinsatz lösen willst: es gäbe so was sicher irgendwann irgendwo zu kaufen. (und wenn du mir den µC schickst, flash ich dir da auch gerne was drauf und schicks dir zurück - aber das wäre mehr als sinnlos)




25

Dienstag, 20. Oktober 2009, 00:52

Danke, du hast mir unglaublich weiter geholfen.

Ich muss zugeben, bis grade war mir nicht wirklich klar wie ich das anstellen soll.

Ich hab jetzt WIN-AVR bzw. AVR-GCC und versuche mittels Kommandozeile und makefile eine HEX DAtei aus meiner vorhandenen .c-Datei zu erstellen,leide rklappt das nicht.
Die Kommandozeile gibt immer " Error: The programm is not being run." aus.

Kannst du mir da weiter helfen?

Locutus

Meister

Beiträge: 2 137

Wohnort: TU Dresden

Beruf: Student, Elektrotechnik auf Diplom

Danksagungen: 7432

  • Nachricht senden

26

Dienstag, 20. Oktober 2009, 12:46

hmm. also im prinzip solltest du ja alle files in deinem oben angegebenen ordner (incl. der makefile und co.) runterladen und in einem ordner abgelegt haben.

hast du denn auch avrstudio installiert? Evtl. brauchst du auch das um das ganze zu compilieren. ansonsten könntest du auch mal die lösung mit eclipse probieren.

ansonsten lade den code doch mal ins programmers notepad, wie es von winavr mitgeliefert wurde und klick mal auf tools -> make all. evtl. funktioniert es ja da dann?

von den files her: hast du mal geguckt, ob die files wirklich richtigen c-code in deinem ordner enthalten und nicht irgend nen html-kram?

im übrigen solltest du mal versuchen, diese datei: https://www.das-labor.org/storage/LaborLib/make/avr.mk in dem ordner, wo du den rest incl. der makefile, liegen hast, in einem unterordner make unter dem namen avr.mk abzulegen. dann dürfte das eig. funktionieren.




27

Dienstag, 20. Oktober 2009, 15:08

Wenn ich das über das programmers notepad mache werden .o und .d Dateien erstellt. Komisch.

Ich komme echt nicht weiter.

Kann mir jemand den Kram kompilieren und das HEX-File dann schicken?

Das wäre echt genial. Ich weiß nicht mehr weiter.

Wenn das jemand machen würde einfach melden,ich schick demjenigen dann die Dateien.

Beiträge: 594

Beruf: Mit fullspeed in der Hochschule verrückt werden

Danksagungen: 1585

  • Nachricht senden

28

Mittwoch, 21. Oktober 2009, 17:17

hallo zusammen

das müsste doch eig auch mit dem programm arduino gehen. das kann man unter arduino.cc herunterladen und bei Problemen in dem dortigen Forum auch Fragen stellen. Kann ich wärmstens empfehlen.
Die Programmiersprache ist bei diesem Programm C und den Rest macht das Prog selber.

Habe damit auch schon einige atmega186 geflasht also bootloader gebrannt und dann programmiert siehe Schreibtisch (signatur).

Gruß und viel Erfolg.

lorenz_fury
Mein PC-Multimediaschreibtisch ist im Bau und wird hoffentlich irgendwann fertig.

Hardware: Core2Duo E4500, Gigabyte Board, 2 GB OCZ ram, Nvidia 8800GT
Kühlung: Nexxxos hp pro, Silentstar dual, Laing DDC 1T, Triple Radi (Firma unbekannt), SUB-ZERO ExodusTank Single 180, Fullcover Wasserkühler für 8800GT

Laptop: Lenovo Thinkpad R61 14,1"

29

Sonntag, 14. Februar 2010, 14:16

Hallo Leute,

Ich bin vor kurzem auch auf diese LED Cubes gestoßen und will mir auch einen bauen. Erfahrung mit dem flashen von Microcontrollern und mit Lötarbeiten aller Art habe ich, da ich mich zur Zeit in der Ausbildung zum Elektroniker f. Betriebstechnik befinde. :D Ich habe mir mal den Code für den Atm32 runtergeladen und festgestellt das der ganz schön durcheinander ist. Die Dateien liegen auf dem Server überall verstreut. Ich habe es dennoch geschafft den Code ohne Errors zu kompilieren.

Jetzt zu meiner eigentlichen Frage: Hat von euch schon jemand das Ding zum laufen bekommen? Bevor ich jetz auch anfange so ein Teil zu bauen und es absolut gar nicht geht.

Gruß
Lee

30

Dienstag, 16. Februar 2010, 20:43

Hi,

Ich hab mich getraut und gestern die ganzen Bauteile bestellt. Ich werd mich also mal an den mehr oder weniger unübersichtlichen Code heranwagen. Ich werde auch dann mal Auskunft geben obs läuft oder nicht :D

Gruß
Lee

Chillex

Fortgeschrittener

Beiträge: 470

Wohnort: Bonn

Beruf: Schüler

Danksagungen: 2510

  • Nachricht senden

31

Dienstag, 16. Februar 2010, 20:47

ich woltle mal einen 6 x 6 x 6 cube machen, als mir aber ein freund davon erzählt hat, hab ich die idee direkt vergessen ^^
Paar Rapids übrig :)? -> E8A2A301DE8AE575F5BDADF0EF601BA7
Die deutsche Rechtschreibung ist Freeware, dass heißt Du darfst sie kostenlos benutzen.
Sie ist allerdings nicht Open Source, dass heißt Du darfst sie weder verändern, noch in veränderter Form veröffentlichen.

32

Donnerstag, 25. Februar 2010, 19:06

Hi, ich bins mal wieder,

Ich habe die Platinen jetzt soweit fertig. Der Controller ist geflasht und fertig für den Betrieb. Ich habe mich gerade gefragt, ob ich die Platine irgendwie testen kann ob alle Bauteile etc. Funktionstüchtig sind. Hat da vielleicht jemand eine Idee?

Gruß Lee

33

Donnerstag, 5. Januar 2012, 15:48

Led Cube 8x8x8

Hi Leute ich bin ganz neu hier und hab auch noch nicht so viel Ahnung .
Ich hab vor kurzen bei Youtube viele Videos von Led Cube´s gesehen und war voll begeistert
:_2

Meine Frage ist nun , was brauch ich alles für diesen Led Cube und hat jemand für mich ein deteilliertes Tutorial wo schritt für schritt beschrieben wird was zu tun ist ?
Ewig war ich überall im Internet auf der Suche nach einer Anleitung ,hab aber nix sinnvolles gefunden boesetom .

Würde mich sehr über Antworten freuen
:_2 :_2
Danke schon mal im Voraus

Schakal

CU-Member

Beiträge: 2 021

Wohnort: NRW GER

Beruf: student

Danksagungen: 3873

  • Nachricht senden

34

Donnerstag, 5. Januar 2012, 17:58

Ich denke mal du möchtest eine anleitung welches teil gehört wo hin und welches muss mit wehm verbundne werden???
Sowas findet man denke ich nicht bzw sehr selten. Meistens muss man sich da etwas in die elektronik einlesen um dann auch die Schaltpläne lesen zu können. Schaltpläne findet man häufig wie auch in diesem Thread.

35

Donnerstag, 5. Januar 2012, 18:10

Ist zwar schade aber ich dank dir trotzdem für die schnelle Antwort :_2

Dann werd ich mal weitersuchen und schauen das ich was passendes finde .

Locutus

Meister

Beiträge: 2 137

Wohnort: TU Dresden

Beruf: Student, Elektrotechnik auf Diplom

Danksagungen: 7432

  • Nachricht senden

36

Donnerstag, 5. Januar 2012, 20:12

der link, der im ersten post dieses threads gepostet ist, reicht dir also nicht? du kannst also hier: http://www.das-labor.org/wiki/Borg3d keine schaltpläne, keine anleitungen zum thema finden? sehr verwunderlich. ich sehe da schaltpläne, software und co., also alles, was du brauchen willst, um das ganze zu bauen. zum aufbauen solltest du schon selbst wissen wie man lötet und das auch beherrschen. dann bekommst denk ich ohne probleme die platinen hin. und die herstellung des cubes selbst findet sich ja auch ordentlich auf den seiten beschrieben! ;)




37

Dienstag, 21. Februar 2012, 00:22

Hallo Community!

Nun muß ich doch mal Fragen ob hier überhaupt mal ein Cube fertig gestellt wurde.?

Bin auch schon eine Weile dabei das Teil zusammen zu löten und hoffe das es wenn es fertig ist funktionieren wird. Doch wenn bei mir Probleme auftauchen wüsste ich nur dieses Forum hier um Antworten zu finden ;)

38

Sonntag, 27. Januar 2013, 21:43

Hallo liebe Community
Habe den Würfel jetzt auch gebaut, jedoch stehe ich jetzt auch vor diesem Software Problem. . .
Wie habt ihr dass mit der Software gelöst?
Könnte auch für mich jemand die Software compilieren und mir die .Hex Datei schicken?

Vielen Dank schonmal im Vorraus.
Antworten dann bitte per PN.

39

Samstag, 9. Februar 2013, 11:23

Led Cupe

Hallo zusammen ich habe die 2 Patinen schon zusammen und brauche Hilfe für die Programmierung des atmega32 Cip wer kann helfen?

Ähnliche Themen

Thema bewerten
Werbung