

petite note pour squalyl justement : je n'ai eu que 5 cartes de puissance, pas 10 comme tu pensais
vince (./162) :J'ai réinstallé l'arduitoolkit, et le driver qui va bien (j'avais pas réinstallé depuis le "hard reverse" de win10) et j'ai retrouvé le programme qui tournait : c'est donc le programme du test du cube 2x2x2 qui fait un si joli chenillard sur les vidéos postées depuis deux jours ^^.Fichier joint : video_2016-02-25_21-35-27.mov
Le minicube marche pas trop mal avec le schéma aux transsitors
(par contre ça nique les zoeils, il faut vraiment que je mette des résistances si je garde une vitesse aussi lente ^^)
PS : faudrait que je me renseigne comment utiliser des variables et faire des boucles dans ce langage parce que le source actuel est fait de pauvres copiercollers depuis le sample #sale#/* Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://www.arduino.cc This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(53, OUTPUT); pinMode(51, OUTPUT); pinMode(49, OUTPUT); pinMode(47, OUTPUT); pinMode(50, OUTPUT); pinMode(52, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(50, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(52, LOW); // turn the LED on (HIGH is the voltage level) digitalWrite(49, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(47, LOW); // turn the LED on (HIGH is the voltage level) digitalWrite(53, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(51, LOW); // turn the LED on (HIGH is the voltage level) delay(200); // wait for a second digitalWrite(53, LOW); // turn the LED off by making the voltage LOW digitalWrite(51, HIGH); // turn the LED off by making the voltage LOW delay(200); // wait for a second digitalWrite(49, LOW); // turn the LED on (HIGH is the voltage level) digitalWrite(47, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(53, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(51, LOW); // turn the LED on (HIGH is the voltage level) delay(200); // wait for a second digitalWrite(53, LOW); // turn the LED off by making the voltage LOW digitalWrite(51, HIGH); // turn the LED off by making the voltage LOW delay(200); // wait for a second //-- digitalWrite(50, LOW); // turn the LED on (HIGH is the voltage level) digitalWrite(52, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(49, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(47, LOW); // turn the LED on (HIGH is the voltage level) digitalWrite(53, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(51, LOW); // turn the LED on (HIGH is the voltage level) delay(200); // wait for a second digitalWrite(53, LOW); // turn the LED off by making the voltage LOW digitalWrite(51, HIGH); // turn the LED off by making the voltage LOW delay(200); // wait for a second digitalWrite(49, LOW); // turn the LED on (HIGH is the voltage level) digitalWrite(47, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(53, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(51, LOW); // turn the LED on (HIGH is the voltage level) delay(200); // wait for a second digitalWrite(53, LOW); // turn the LED off by making the voltage LOW digitalWrite(51, HIGH); // turn the LED off by making the voltage LOW delay(200); // wait for a second }
/*
53 - Data IN
52 - Latch
51 - Data OUT
50 - CLK
*/
int delay_ms=10;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(53, OUTPUT); // Data IN
pinMode(52, OUTPUT); // Latch
pinMode(51, INPUT); // Data OUT
pinMode(50, OUTPUT); // Clk
pinMode(13, OUTPUT); // onboard led
}
// the loop function runs over and over again forever
void loop() {
int nb_out=0;
//init with 0
for (int i=0;i<4096; i++){
digitalWrite(53, LOW);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//DISPLAY
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
digitalWrite(13, LOW);
delay(delay_ms);
//Autotest (comptage d'un cycle)
//init with 0
for (int i=0;i<4096; i++){
digitalWrite(53, LOW);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//insert 1
digitalWrite(53, HIGH);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
nb_out=1;
//fill with 0
while (digitalRead(51)==LOW){
digitalWrite(53, LOW);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
nb_out++;
}
// nb_out in binary
for (int i=0;i<16; i++){
digitalWrite(53, bitRead(nb_out,i));
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//DISPLAY
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
digitalWrite(13, digitalRead(51));
delay(1000);
//init with 0
for (int i=0;i<nb_out; i++){
digitalWrite(53, LOW);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//DISPLAY
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
digitalWrite(13, LOW);
delay(delay_ms);
//Chenillard
for (int j=0;j<nb_out;j++){
for (int i=0;i<nb_out; i++){
if (j>i){
digitalWrite(53, HIGH);
}else {
digitalWrite(53, LOW);
}
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//DISPLAY
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
digitalWrite(13, digitalRead(51));
delay(delay_ms);
}
for (int j=0;j<nb_out;j++){
for (int i=0;i<nb_out; i++){
if (j<i){
digitalWrite(53, HIGH);
}else {
digitalWrite(53, LOW);
}
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//DISPLAY
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
digitalWrite(13, digitalRead(51));
delay(delay_ms);
}
}
Donc, ça init à blanc, ça recherche la boucle pour savoir combien de digit j'affiche (j'affiche pendant 1 seconde la valeur en hexa) et ensuite un petit chenillard sur l'ensemble...
#include "TimerOne.h"
char video_buffer[]={LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW,
LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW,
LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW,
LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW,
LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW,
LOW, HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, HIGH, LOW,
HIGH, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH,
LOW, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, LOW,
LOW, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, HIGH, LOW,
LOW, LOW, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW,
LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW,
LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW,
LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW};
// :)
char sprite[]={LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW,
LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW,
LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW,
LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW,
LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW,
LOW, HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, HIGH, LOW,
HIGH, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH,
LOW, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, LOW,
LOW, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, HIGH, LOW,
LOW, LOW, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW,
LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW,
LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW,
LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW};
// wolf
char sprite2[]={LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW,
LOW, HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW, HIGH, LOW,
LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW,
LOW, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, LOW,
HIGH, HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, HIGH,
HIGH, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, HIGH,
HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH,
LOW, LOW, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW,
LOW, LOW, HIGH, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH, LOW, LOW, LOW, HIGH, LOW, LOW,
LOW, LOW, HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, LOW, LOW,
LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW,
LOW, LOW, LOW, LOW, HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW,
LOW, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, LOW};
int frame=0;
int couche_vbl=0;
int nb_out=0;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(53, OUTPUT); // Data IN
pinMode(52, OUTPUT); // Latch
pinMode(51, INPUT); // Data OUT
pinMode(50, OUTPUT); // Clk
pinMode(49, OUTPUT); // selcouche bit 3
pinMode(48, OUTPUT); // selcouche bit 2
pinMode(47, OUTPUT); // selcouche bit 1
pinMode(46, OUTPUT); // selcouche bit 0
pinMode(13, OUTPUT); // onboard led
selcouche(0);
//Autotest (comptage d'un cycle)
//init with 0
for (int i=0;i<4096; i++){
digitalWrite(53, LOW);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//insert 1
digitalWrite(53, HIGH);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
nb_out=1;
//fill with 0 until 1 exits the loop
while (digitalRead(51)==LOW){
digitalWrite(53, LOW);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
nb_out++;
}
//init with 0
for (int i=0;i<nb_out; i++){
digitalWrite(53, LOW);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//DISPLAY
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
digitalWrite(13, LOW);
Timer1.initialize(50000);
Timer1.attachInterrupt(VBL);
}
void selcouche(int couche){
switch(couche){
case 0:
digitalWrite(49, LOW);
digitalWrite(48, LOW);
digitalWrite(47, LOW);
digitalWrite(46, LOW);
break;
case 1:
digitalWrite(49, LOW);
digitalWrite(48, LOW);
digitalWrite(47, LOW);
digitalWrite(46, HIGH);
break;
case 2:
digitalWrite(49, LOW);
digitalWrite(48, LOW);
digitalWrite(47, HIGH);
digitalWrite(46, LOW);
break;
case 3:
digitalWrite(49, LOW);
digitalWrite(48, LOW);
digitalWrite(47, HIGH);
digitalWrite(46, HIGH);
break;
case 4:
digitalWrite(49, LOW);
digitalWrite(48, HIGH);
digitalWrite(47, LOW);
digitalWrite(46, LOW);
break;
case 5:
digitalWrite(49, LOW);
digitalWrite(48, HIGH);
digitalWrite(47, LOW);
digitalWrite(46, HIGH);
break;
case 6:
digitalWrite(49, LOW);
digitalWrite(48, HIGH);
digitalWrite(47, HIGH);
digitalWrite(46, LOW);
break;
case 7:
digitalWrite(49, LOW);
digitalWrite(48, HIGH);
digitalWrite(47, HIGH);
digitalWrite(46, HIGH);
break;
case 8:
digitalWrite(49, HIGH);
digitalWrite(48, LOW);
digitalWrite(47, LOW);
digitalWrite(46, LOW);
break;
case 9:
digitalWrite(49, HIGH);
digitalWrite(48, LOW);
digitalWrite(47, LOW);
digitalWrite(46, HIGH);
break;
case 10:
digitalWrite(49, HIGH);
digitalWrite(48, LOW);
digitalWrite(47, HIGH);
digitalWrite(46, LOW);
break;
case 11:
digitalWrite(49, HIGH);
digitalWrite(48, LOW);
digitalWrite(47, HIGH);
digitalWrite(46, HIGH);
break;
case 12:
digitalWrite(49, HIGH);
digitalWrite(48, HIGH);
digitalWrite(47, LOW);
digitalWrite(46, LOW);
break;
case 13:
digitalWrite(49, HIGH);
digitalWrite(48, HIGH);
digitalWrite(47, LOW);
digitalWrite(46, HIGH);
break;
case 14:
digitalWrite(49, HIGH);
digitalWrite(48, HIGH);
digitalWrite(47, HIGH);
digitalWrite(46, LOW);
break;
case 15:
digitalWrite(49, HIGH);
digitalWrite(48, HIGH);
digitalWrite(47, HIGH);
digitalWrite(46, HIGH);
break;
default:
digitalWrite(49, LOW);
digitalWrite(48, LOW);
digitalWrite(47, LOW);
digitalWrite(46, LOW);
}
}
// The callback of the timer1 (displays a layer)
void VBL(){
for (int i=0;i<nb_out; i++){
digitalWrite(53, video_buffer[i]);
digitalWrite(50, LOW);
digitalWrite(50, HIGH);
}
//DISPLAY
selcouche(couche_vbl);
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
couche_vbl=(couche_vbl+1)&15;
}
// the loop function runs over and over again forever
void loop() {
if( frame==0){
frame=1;
memcpy(video_buffer, sprite,256);
}else{
frame=0;
memcpy(video_buffer, sprite2,256);
}
delay(1000);
}