Le microprocesseur, ce monstre de puissance qui passe son temps à attendre

Note : Cette dépêche n’a pas été créée ici mais à été copier-coller de  l’excellent article sur le site de LinuxFR.org une version améliorer de la première version sortie sur le site Zeste de savoir. L’auteur original est La dépêche est sorti sous licence CC-BY 4.0 obligent à citer l’auteur, et la licence et si elle à été modifier. D’ailleurs au passage n’hésiter pas à consulter les deux sites qui sont une mine d’informations. Sur ceux je vous laisse avec l’article en question .

—> []

Avez-vous déjà remarqué à quel point le microprocesseur de votre ordinateur est un composant extrêmement puissant, et à quel point le moindre accès aux données est une horreur de lenteur de son point de vue ?

Pour essayer de se représenter tout ça, on va imaginer que _vous êtes_ un cœur de microprocesseur, ralenti d’un facteur un milliard.

Or donc, vous êtes un cœur d’un microprocesseur moderne. Vous êtes avec d’autres collègues dans un open space; votre boulot – et vous n’avez pas le choix – c’est d’exécuter des instructions, c’est-à-dire pour vous de taper au clavier, une touche par impulsion d’horloge. Un processeur moderne peut être cadencé à 4 GHz, ce qui fait pour vous 4 frappes par seconde, ce qui est déjà rapide.

Et voici que vous avez besoin d’une information que vous n’avez pas. Zut, flûte, raalgamaziel, il vous faut la procurer.

Est-ce qu’elle est dans le cache L1 ? Vous prenez un peu plus d’une seconde (un peu plus d’1 ns ou 4 instructions) pour lire ce post-it sur votre bureau.

Non. Est-ce qu’elle est dans le cache L2 ? Vous prenez environ cinq secondes (environ 5 ns ou 20 instructions) pour parcourir la feuille à côté de votre clavier.

Toujours pas. Est-ce que par hasard elle serait dans le cache L3 ? Vous devez vous lever et prendre entre quinze et vingt secondes (15 à 25 ns soit 60 à 100 instructions) pour consulter ce schéma accroché à un mur.

Ça commence à puer cette histoire. Où diable peut se trouver cette information indispensable ?

Est-ce un résultat de calcul que doit vous donner un collègue (donc un autre cœur) ? Selon l’organisation de votre bureau (la topologie du processeur) et l’humeur dudit collègue, vous aurez la réponse dans entre quarante secondes et deux minutes vingt (40 à 140 ns soit 160 à 560 instructions).

C’est aussi l’ordre de grandeur du temps qu’il va vous falloir patienter pour récupérer une information planquée dans les banques de mémoire du bureau d’à côté : une grosse minute à plus d’une minute et demie (70 à 100 ns, soit 280 à 400 instructions). C’est déjà très long, même par rapport à votre schéma sur le mur du bureau.

Et si jamais vous n’avez toujours pas votre information, là c’est le drame. Parce que toute autre forme de stockage va être vraiment très lente à réagir par rapport à tout ce qu’on vient de voir.

Si vos données sont sur un SSD au format M2, cas le plus favorable, vous en avez pour une petite journée (au moins 5h30) de recherche à la bibliothèque (plus de 0.02 ms, soit plus de 20 000 ns… et donc 80 000 instructions).

Un SSD au format SATA est encore plus long, c’est comme si vos données étaient livrées par un coursier rapide : ça arrive vite, mais il faut quand même compter plus d’une journée et d’une nuit entières… (à la louche 100 μs, 400 000 instructions).

Et si votre information n’est toujours pas là… c’est la catastrophe.

S’il faut la faire venir depuis un disque dur mécanique ou par Internet depuis une connexion fibre, non seulement vous pouvez partir en vacances, mais en plus vous n’aurez jamais assez de congés payés pour patienter jusqu’à ce que votre donnée soit arrivée, puisqu’il vous faudra environ deux mois entre la demande et l’arrivée de ce dont vous avez besoin ! (un ordre de grandeur de 5 ms… soit 5 000 000 ns et 20 000 000 instructions !).

Un chiffre que l’on peut tripler si la connexion Internet est une liaison cuivre ; la présence d’un WiFi dans le circuit permet probablement de concevoir intégralement un enfant.

(Tant qu’on est dans les comparaisons bizarres, si vous exécutez le code d’un jeu vidéo, vous avez un budget de 16 666 666 secondes soit plus de six mois pour le calcul d’une image pour avoir un rendu fluide. C’est énorme… tant que les données sont en mémoire, cf ci-dessus).

Mais la véritable situation catastrophique dans laquelle vous allez être véritablement bloqué sans rien faire, c’est si par malheur votre code attend la réaction d’un humain : s’il est surpris, il va mettre au moins une seconde réelle à réagir, soit un milliard de secondes pour vous, ce qui équivaut à… près de 32 ans. Vous affichez la popup en débutant votre premier boulot, l’utilisateur clique quand vous commencez à penser à votre retraite. S’il est réactif.

Et voilà qui remets à notre échelle des unités très variées (ms, ns, parfois μs) que l’on utilise peu et donc appréhende mal surtout si elles sont mélangées ! J’espère ne pas m’être trop planté dans mes calculs, et que cette petite analogie filée vous aura permis de comprendre :

– La puissance réelle et affolante des microprocesseurs modernes ;
– Pourquoi on a plein de niveaux de cache, des pipelines et autres techniques pour que le processeur serve pendant les attentes, et pourquoi les SSD sont aussi agréables par rapport à des disques mécaniques ;
– Pourquoi c’est scandaleux que sur du matériel moderne on trouve des logiciels qui ne font rien de particulièrement complexe mais qui utilisent quand même tout le processeur.

Et ça c’est juste du côté matériel, sans même parler du rôle du système d’exploitation, qui va profiter d’une attente d’entrée/sortie pour changer de contexte ou mettre le processeur en veille. On comprends alors mieux l’intérêt des frameworks qui gèrent ces entrées/sorties de manière non bloquante.

Led Wars : La Revanche du Ruban de LED

Présentation

L’objectif est de réaliser divers animation avec un ruban de LED RGB .

Matériel Nécessaire

– Un ruban de LED de référence WS2811B SMD5050, de 150 LED, de 5
mètres de long à un prix d’environ 19 €.

La  LED RGB WS2812 utiliser sur le ruban de LED à une capacité de 16
777 216 couleurs affichable grâce au 3 leds (Rouge, Vert, Bleu) et
256 niveau de luminosités. Elle sont piloter numériquement à l’aide
d’un seul fil.

Par ailleurs 3 LED : rouge, vert, bleu et un contrôleur numérique qui
les pilotes sont intégrées dans la LED RGB WS2812.

– Une alimentation de puissance 50W, de tension 5V et de courant 10A
par exemple la MeanWell RS-50-5 d’un prix d’environ 15 €

– Un Arduino Uno d’un prix d’environ 20 €

– Un ancienne alimentation de PC enlevée de sa carte électronique

– Un cordon d’alimentation de PC

– Un câble USB pour connecter l’Arduino et le PC

– Un cordon d’alimentation pour alimenter l’Arduino

– Un cordon permettant de connecter le ruban de led à l’alimentation
et l’Arduino

Outillage nécessaire

– Un tournevis cruciforme

Câblage

Il existe deux configuration possible :

– Câblage en fonctionnement autonome, utiliser lors de l’usage normale
du Ruban de LED RGB
– Câblage connecter à l’ordinateur, utiliser pour développez le
programme sur l’IDE Arduino

Câblage en fonctionnement autonome

En mode autonome, l’Arduino est indépendant et utilise la même
alimentation que le ruban de LED RGB.

L’alimentation 230 V vers 5 V est intégré dans le boîtier d’une ancienne
alimentation de PC.

Le fil ou transite les donnée numérique pour piloter les LEDS du ruban
de LED RGB est branchée sur l’entrée 6 de l’Arduino. Il faudra
configurer la même entrée durant la phase de développement du programme.

Câblage en mode de connection avec le PC

En mode de connection avec le PC, l’Arduino utilise l’alimentation du PC
et sont programme peut être mis à jour.

Développement du programme

Pour développer le programme gérant l’animation du ruban de led vous
devez avoir deux chose : l’IDE Arduino ainsi que la bibliothèque
Adafruit NeoPixel.

Installation de l’éditeur Arduino

 Sous Debian

Pour installe l’IDE Arduino sous Debian GNU/Linux, ouvrer un terminale,
loguer vous en root :

$ su

Puis installer le paquet Arduino avec l’utilitaire `apt` via la commande
:

# apt-get install arduino

 Sous Windows

Rendez-vous sur la page de téléchargement de l’éditeur de programme Arduino.

Puis cliquer sur Windows Installer pour télécharger le programme
d’installation.

Une fois télécharger vous n’avez plus que à lancer le programme
d’installation.

Installation de la librairie Adafruit NeoPixel

Vous pouvez soit télécharger la librairie directement sur internet.
Décompresser l’archive. Renommer le dossier `Adafruit_NeoPixel-master`
en `Adafruit_NeoPixel`, puis copier le dossier dans le dossier
`~/sketchbook/libraries`.

Ou récupérer la librairie directement dans le dossier `librairie` du
répertoire source de cette documentation et le copier dans le dossier
`~/sketchbook/libraries`.

Vous pouver aussi directement le faire en ligne de commande.

En téléchargent sur le site :

$ wget https://github.com/adafruit/Adafruit_NeoPixel/archive/master.zip

$ unzip master.zip

$ mv Adafruit_NeoPixel-master/ ~/sketchbook/libraries/Adafruit_NeoPixel

Structure de base du programme

Voici la structure de base du programme qui gère le ruban de LED.

#include <Adafruit_NeoPixel.h> // Charge la librairie Neo Pixel d'Adafruit utilisé pour piloter le ruban de LED

#define PIXEL_PIN 6 // On définit le pin où est connecté la patte DATA du bandeau
#define PIXEL_COUNT 150 // On définit le nombre de LED compris sur le Ruban de LED soit 150 pour le ruban de 5m50

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // Paramètre l'objet strip qui correspond à toute les LED du ruban

void setup() {
strip.begin(); // Lance la connection
strip.show(); // Initialise toute les led à 'off'
}

/* Définition des couleurs */
int RED[3] = {255, 0, 0}; // Couleur Rouge
int GREEN[3] = {0, 255, 0}; // Couleur Verte
int CYAN[3] = {0, 255, 255}; // Couleur Cyan
int YELLOW[3] = {255, 125, 0}; // Couleur Jaune
int ORANGE[3] = {255, 40, 0}; // Couleur Orange
int PURPLE[3] = {255, 0 , 255}; // Couleur Violette
int PINK[3] = {255, 0, 100}; // Couleur Rose
int BLUE[3] = {0, 0, 255}; // Couleur Bleu
int WHITE[3] = {255, 255, 255}; // Couleur Blanche
int OFF[3] = {0, 0, 0}; // Éteint

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
}

Allumer toutes les led d’une même couleur

Voici la fonction pour allumer toute les leds d’une même couleur.

void allLeds(int COLOR[])
{
for(int i = 0 ; i < PIXEL_COUNT ; i++)
{
strip.setPixelColor(i, COLOR[0], COLOR[1], COLOR[2]);
}
strip.show();
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en argument de la fonction la couleur que vous
souhaiter utiliser.

Par exemple ci dessous j’ai allumer toute les led du ruban de la couleur
rouge. Je passe pour cela en argument le tableau RED à la fonction
`allLeds`.

void loop() {
strip.brightismes(100); // Règle la luminosité à 100 % de la luminosité maximale
allLeds(RED);
}

Allumer le ruban de LED moitiée d’une couleur, moitiée d’une autre

Voici la fonction pour allumer le ruban de LED moitiée d’une couleur,
moitiée d’une autre.

void allBicolor(int COLOR_LEFT[], int COLOR_RIGHT[])
{
for(int i = 0 ; i < PIXEL_COUNT/2 ; i++)
{
strip.setPixelColor(i, COLOR_LEFT[0], COLOR_LEFT[1], COLOR_LEFT[2]);
}

for(int i = PIXEL_COUNT/2 ; i < PIXEL_COUNT ; i++)
{
strip.setPixelColor(i, COLOR_RIGHT[0], COLOR_RIGHT[1], COLOR_RIGHT[2]);
}
strip.show();
}

 

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction la couleur de la
première moitiée du ruban de LED, et la couleur de la seconde moitiée du
ruban de LED.

Par exemple ci dessous j’ai allumer la moitiée du ruban de couleur cyan
et l’autre moitiée de couleur bleu.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
allBicolor(CYAN,BLUE);
}

Allumer le ruban de LED d’une couleur de façon progressive

Voici la fonction pour allumer le ruban de LED d’une couleur de façon
progressive.

void progressiveUp(int temps, int COLOR[])
{
for(int lumi = 0 ; lumi < 100 ; lumi++)
{
for(int i = 0 ; i < 150 ; i++)
{
strip.setPixelColor(i, COLOR[0], COLOR[1], COLOR[2]);
}
strip.setBrightness(lumi);
strip.show();
delay(temps);
}
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction la couleur du ruban de
LED, et le temps entre les différent pallié de luminosité.

Par exemple ci dessous j’ai allumé le ruban de LED de couleur bleu avec
une durée de 10 ms par pallié de luminosité.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
progressiveUp(10, BLUE);
}

Variation progressive d’une couleur à une autre

Voici la fonction pour faire varier le ruban d’une couleur à une autre.

void changeColor(int temps, int colorDebut[3], int colorFin[3])
{

int color[3] = {0};

color[0] = colorDebut[0];
color[1] = colorDebut[1];
color[2] = colorDebut[2];

while(color[0] != colorFin[0] || color[1] != colorFin[1] || color[2] != colorFin[2])
{

if(color[0] > colorFin[0])
{
color[0]--;
}
else if(color[0] < colorFin[0])
{
color[0]++;
}

if(color[1] > colorFin[1])
{
color[1]--;
}
else if(color[1] < colorFin[1])
{
color[1]++;
}

if(color[2] > colorFin[2])
{
color[2]--;
}
else if(color[2] < colorFin[2])
{
color[2]++;
}

delay(temps);
allLeds(color);
}
}

 

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction le temps de la
variation, la couleur de départ, la couleur d’arrivée.

Par exemple ci dessous le ruban de LED varie de la couleur bleu à la
couleur rouge par paliée d’une durée de 10 ms.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
changeColor(10, BLUE, RED);
}

Faire déplacer une LED le long du fil

Voici la fonction pour faire déplacer une LED le long du fil.

void ledUp(int temps, int color[3])
{
for(int i = 0 ; i < 150 ; i++)
{
strip.setPixelColor(i, color[0], color[1], color[2]);
strip.show();
strip.setPixelColor(i, 0, 0, 0);
strip.show();
delay(temps);
}
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction le temps de l’effet
ainsi que sa couleur.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
ledUp(20, RED);
}

Faire allumée progressivement châque LED en mode chenillard

Voici la fonction pour faire allumée progressivement châque LED en mode
chenillard.

void chenillardUp(int temps, int color[3])
{
for(int i = 0 ; i < 150 ; i++)
{
strip.setPixelColor(i, color[0], color[1], color[2]);
strip.show();
delay(temps);
}
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction le temps de l’effet
ainsi que sa couleur.

void loop() {
allLeds(OFF);
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
chenillardUp(10, GREEN);
}

Ma douche sauvée par la Bidouille d’Allaire

J’ai acheté une paroi de douche et une porte coulissante en verre sur le bon coin.
Je pensais avoir fait une bonne affaire, mais pas tant que ça :
ayant posé le placo, fait la plomberie, monté la paroi de douche, posé le carrelage ; je pensais pouvoir bientôt terminer la douche !!!

Mais voilà, au moment du montage de la porte, nous réalisons qu’il manque deux supports en plastique qui tiennent et guident une roulette dans une gorge…..

Je me précipite alors sur internet pour retrouver cette pièce manquante, impossible à trouver !

J’avais cependant trouver les roulettes sur un site ukrainien mais il me manquait les deux supports !

L’histoire se termine bien grâce à l’atelier Bioduille d’Allaire du Vendredi soir à la Médiathèque qui parvient à modéliser et imprimer ces deux pièces maîtresses, une gauche et une droite, symétriques !
Comme quoi, c’est bien utile ces petites bidouilles !

 

Sandrine

Lumière sur l’Arduino avec de la couleur et des LED !

Aujourd’hui je vais vous parler d’un de mes projets  ayant pour objectif de créer un ruban de LED  créant une ambiance lumineuse colorée dans une pièce.

Pour ce projet j’ai choisi d’utiliser la carte Arduino. La carte Arduino se programme facilement et donc on peut faire un peu tout ce qu’on veut avec.

 

Pour l’éclairage de la pièce, mon choix s’arrêta rapidement sur la technologie LED du fait de sa faible consommation électrique, de sa faible chauffe et de sa bonne durée de vie.

Maintenant, choisissons la couleur de la LED !

Rouge, vert ou bleu ?

Eh, attendez ! Moi je veux toutes les couleurs !

J’ai donc choisi les diodes électroluminescente de type RGB.  Car elles permettent d’avoir accès à différentes combinaisons de couleurs pour l’éclairage.

Je me suis posé la question si il fallait les piloter individuellement ou en même temps.

J’ai longuement hésité pour enfin partir sur la solution des LED pilotées individuellement.

Mais ça nécessite beaucoup de fils me direz vous !

Si pour l’analogique c’est effectivement le cas, ça ne l’est pas avec un bus numérique qui ne nécessite qu’un seul fil !

Je me suis arrêté sur le  ruban de LED RGB WS2812 de 5 mètres.

Il est utilisable uniquement en intérieur même si la solution utilisable en extérieur existait.

C’est un ruban ou chaque LED (environs 150) utilise des fils d’alimentation (+ et -), et un seul fil pour les piloter et c’est là tout l’intérêt d’un bus de données.

Les LED WS2812 peuvent afficher 16 777 216 couleurs différentes et 256 niveaux de luminosité différentes avec une fréquence de rafraîchissement de 400 Hz ( 400 fois par seconde).

Pour ceux qui veulent en savoir plus sur le ruban de LED voici la documentation en Anglais bien sûr.

J’ai aussi trouvé la documentation  de chaque LED WS2812.

Le ruban à été acheté sur le site Tmart.com :  voici le lien pour les acheter.


Installation du matériel

L’installation n’a pas été si compliquée. Je vous montre le schéma :

 

Je me suis vite rendu compte que l’alimentation que j’avais pris de 5 V/ 2 A était très juste car les LED consommait au total 7,5 A.

J’ai donc commandé une alimentation de 5V / 10A sur Amazon.  Elle s’avère plus puissante que l’ancienne et arrive à fournir en intensité le ruban de LED. Du fait qu’elle est supérieure au courant total consommé Alimentation 10 A >  Ruban LED 7,5 A.

J’ai également profité pour intégrer la nouvelle alimentation dans un boîtier pour isoler le 230 V (car c’est très dangereux).

J’ai prix une ancienne alim de PC dont j’ai enlevé la carte électronique puis enlever tout les fils qui était en trop.

J’ai relié le connecteur 230 V de l’alimentation de PC à l’alimentation 5V/10A puis j’ai sorti le V+ qui correspond au 5V et le V- qui correspond à la masse pour pouvoir alimenter directement sur le ruban de LED.

J’en ai aussi profité pour alimenter directement l’Arduino qui utilisait avant une alimentation externe pour fonctionner.

Pour la programmation rien de plus simple  j’ai téléchargé une bibliothèque développée par l’équipe d’Adafruit pour piloter les LED RGB comme je le voulais.

Bien sûr après il faut comme même programmer les effets que l’on veux.

/!\ Attention tant que vous n’avez pas envoyée les commandes, les LED restent éteintes même si vous les avez branchées.

Développement du programme

Pour cela je suis parti d’une structure de base :


#include <Adafruit_NeoPixel.h> // Charge la librairie Neo Pixel d'Adafruit utilisé pour piloter le ruban de LED

#define PIXEL_PIN 6 // On définit le pin où est connecté la patte DATA du bandeau
#define PIXEL_COUNT 150 // On définit le nombre de LED compris sur le Ruban de LED soit 150 pour le ruban de 5m50

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // Paramètre l'objet strip qui correspond à toute les LED du ruban
 
void setup() {
   strip.begin(); // Lance la connection
   strip.show(); // Initialise toute les led à 'off'
}

/* Définition des couleurs */
int RED[3] = {255, 0, 0}; // Couleur Rouge
int GREEN[3] = {0, 255, 0}; // Couleur Verte
int CYAN[3] = {0, 255, 255}; // Couleur Cyan
int YELLOW[3] = {255, 125, 0}; // Couleur Jaune
int ORANGE[3] = {255, 40, 0}; // Couleur Orange
int PURPLE[3] = {255, 0 , 255}; // Couleur Violette
int PINK[3] = {255, 0, 100}; // Couleur Rose
int BLUE[3] = {0, 0, 255}; // Couleur Bleu
int WHITE[3] = {255, 255, 255}; // Couleur Blanche

void loop() {
  strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
}
Structure de base du programme

La partie setup ne fait qu’initialiser les 150 LED à l’état éteint. C’est dans la partie loop que le programme sera joué en boucle. J’ai donc commencé par créer pour chaque effet une fonction.

Création de divers effets

Le chenillard de LED

Le premier que j’ai créé est un effet de chenillard de LED dans un sens dont voici le code :

void chenillardUp(int temps, int r, int v, int b)
{
  for(int i = 0 ; i < 150 ; i++)
  {
     strip.setPixelColor(i, r, v, b);
        strip.show();
            strip.setPixelColor(i, 0, 0, 0);
        strip.show();
          delay(temps);  
  }
}
Chennilard de LED

Ensuite il suffit de l’intégrer dans le loop et le tour est joué :

#include <Adafruit_NeoPixel.h>
 
// On définit le pin où est connecté la patte DATA du bandeau
#define PIN 6
 
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
 
//Ici, le 150 correspond au nombre de led
Adafruit_NeoPixel strip = Adafruit_NeoPixel(150, PIN, NEO_GRB + NEO_KHZ800);
 
void setup() {
  strip.begin();
  strip.show(); // Initialise toute les led à 'off'
}
 
void loop() {
// La première valeur correspond au temps, la seconde  à l'intensité du rouge, la troisième au vert, et la quatrième au bleu
  chenillardUp(10, 255, 255, 255); 
}

Résultat :

Allumage de toutes les LED du ruban (avec choix de la couleur)

Voici le code de la fonction pour l’allumage de toutes les LED :

void all(int temps, int r, int v, int b)
{
   for(int i = 0 ; i < 150 ; i++)
  {
     strip.setPixelColor(i, r, v, b);
  }
  strip.show();
   delay(temps); 
}
Allumage de l'ensemble du bandeau de LED

Avec le résultat :

Allumage de toute les LED de façon progressive

Voici le code de la fonction pour l’allumage de toute les LED de façon progressive :

void progressiveUp(int temps, int r, int v, int b)
{
  for(int lumi = 0 ; lumi < 100 ; lumi++)
  {
     for(int i = 0 ; i < 150 ; i++)
    {
       strip.setPixelColor(i, r, v, b);
    }
    strip.setBrightness(lumi); 
    strip.show();
     delay(temps);
  }
}
Allumage de toute les LED de facon progressive

Avec le résultat :

Allumage en chenillard de façon progressive

Voici le code pour allumer toutes les LED progressivement :

void progressiveUp(int temps, int r, int v, int b)
{
  for(int lumi = 0 ; lumi < 100 ; lumi++)
  {
     for(int i = 0 ; i < 150 ; i++)
    {
       strip.setPixelColor(i, r, v, b);
    }
    strip.setBrightness(lumi); 
    strip.show();
     delay(temps);
  }
}
Allumage en chenillard de toute les LED

Résultat :

Animation de séquence de 9 couleurs à la suite

Le code :

void anim_nineColor(int temps)
{
  for(int i = 0 ; i < PIXEL_COUNT ; i = i + 9)
  {
   strip.setPixelColor(i, RED[0], RED[1], RED[2]);
   strip.setPixelColor(i+1, GREEN[0], GREEN[1], GREEN[2]);
   strip.setPixelColor(i+2, CYAN[0], CYAN[1], CYAN[2]);
   strip.setPixelColor(i+3, YELLOW[0], YELLOW[1], YELLOW[2]);
     strip.setPixelColor(i+4, ORANGE[0], ORANGE[1], ORANGE[2]);
     strip.setPixelColor(i+5, PURPLE[0], PURPLE[1], PURPLE[2]);
     strip.setPixelColor(i+6, PINK[0], PINK[1], PINK[2]);
     strip.setPixelColor(i+7, BLUE[0], BLUE[1], BLUE[2]);
     strip.setPixelColor(i+8, WHITE[0], WHITE[1], WHITE[2]);
  }  
   strip.show();
   delay(temps);
}

Effet de vague

Le code :

/*
  Animation : Effet de vague avec toute les couleur
    > uint8_t wait => temps d'attente en ms
 */
  
void anim_rainbowCycle(uint8_t wait) {
  uint16_t i, j, numbers;
  numbers = 256 * 5;
  


  for(j=0; j < numbers; j++) { // 5 cycles of all colors on wheel
    for(i=0; i < PIXEL_COUNT; i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / PIXEL_COUNT) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

Effet de lumière façon manège

Le code :

/*
  Animation : Effet lumière manège
    > uint8_t wait => temps d'attente en ms
 */
 
void anim_theaterChaseRainbow(uint8_t wait) {
  
  for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel
    for (int q=0; q < 3; q++) {
      for (int i=0; i < PIXEL_COUNT; i=i+3) {
        strip.setPixelColor(i+q, Wheel( (i+j) % 255));    //turn every third pixel on
      }
      strip.show();
  
      delay(wait*2.5);

      for (int i=0; i < PIXEL_COUNT; i=i+3) {
        strip.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}

Effet de flamme

Le code :

/*
  Animation : Effet flame
 */
 
void anim_fire()
{
int r = ORANGE[0];
int g = ORANGE[1]+5;
int b = ORANGE[2];

int variation = 45;

for(int x = 0; x <PIXEL_COUNT; x++)
{
int flicker = random(0,variation);
int r1 = r-flicker;
int g1 = g-flicker;
int b1 = b-flicker;
if(g1<0) g1=0;
if(r1<0) r1=0;
if(b1<0) b1=0;
strip.setPixelColor(x,r1,g1, b1);
}
strip.show();
delay(random(50,115));
}

Effet moitié 1 couleur, moitié autre couleur

Le code :

/*
  Animation : Effet deux couleur
  > int temps => temps en ms
  > int colorLeft => Couleur de Gauche
  > int colorRight => Couleur de Droite
*/
 
void anim_allBiColor( int temps, int colorLeft[3], int colorRight[3])
{

        for(int i = 0 ; i < PIXEL_COUNT/2 ; i++)
            {
               strip.setPixelColor(i, colorRight[0], colorRight[1], colorRight[2]);
            }
            for(int i = PIXEL_COUNT/2 ; i < PIXEL_COUNT ; i++)
            {
               strip.setPixelColor(i, colorLeft[0], colorLeft[1], colorLeft[2]);
            }
          strip.show();
           delay(temps);
  
}

Changement d’une couleur à une autre

Le code :

/*
  Animation : Changement d'une couleur à une autre de manière progressive
    > int temps => temps d'attente en ms
    > int colorDebut => Couleur 1
     > int colorFin => Couleur 2
 */
 
void anim_changeColor(int temps, int colorDebut[3], int colorFin[3])
{
  
  int color[3] = {0};
  
  color[0] = colorDebut[0];
  color[1] = colorDebut[1];
  color[2] = colorDebut[2];
  
 while(color[0] != colorFin[0] || color[1] != colorFin[1] || color[2] != colorFin[2])
  {
    
    if(color[0] > colorFin[0])
    {
      color[0]--;
    }
    else if(color[0] < colorFin[0])
    {
      color[0]++;
    }
    
     if(color[1] > colorFin[1])
    {
      color[1]--;
    }
    else if(color[1] < colorFin[1])
    {
      color[1]++;
    }
    
     if(color[2] > colorFin[2])
    {
      color[2]--;
    }
    else if(color[2] < colorFin[2])
    {
      color[2]++;
    }
    
  
    
    
    anim_all(temps, color);
  }
}

Résultat :

 

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Un petit tours des très bon logiciel libre et gratuit

Pourquoi utiliser un logiciel libre ?

C’est quoi ?

Un logiciel libre c’est un logiciel dont le code source est consultable par tous et dont tout le monde peut étudier son fonctionnement et le modifier (comme pourrait être par analogie une recette de cuisine qu’une cuisinière pourrait modifier pour l’améliorer).

C’a coûte quoi ?

Le gros avantage des logiciels libres  c’est bien souvent qu’ils sont gratuits là ou  les logiciels professionnel propriétaire sont bien souvent trop chère.

De même les logiciels libres ne nécessite pas de repayer le logiciel pour une mise à jour comme le font les logiciels professionnel même si maintenant il existe des abonnement.

Qui me dit que le logiciel ne vas pas disparaître ?

Bien souvent le fait que le logiciel soit libre vous garantisse qu’il ne va pas disparaître du jour au lendemain.

Il fonctionne sur mon PC ?

Un logiciel libre souvent multiplate-forme (Mac OS, GNU/Linux, Windows). Il fonctionne sans souci sur votre Ordinateur?

Je peux obtenir de l’aide facilement ?

Souvent il existe une communauté d’utilisateurs plus ou moins grandes qui vous aiderons ainsi que de la documentation (tutoriel video, tutoriel, manuel d’utilisateur, …).

C’est pas risquée pour mon PC ?

Un autre avantages c’est contrairement à certain logiciel privateur (acheter ou cracker) vous pouvez être sur que le logiciel ne sera pas malveillant en récupérant vos donnée personnel ou en introduisant des virus, cheveaux de trois, ou autres.

Y a t’il les mêmes fonctionnalités qu’avec un logiciel propriétaire ?

Un des inconvénient des logiciel libre se situe au niveau des logiciel professionnel payant il peut arriver que parfois vous n’avez pas l’équivalent de certain des outils des logiciel professionnel. Bien  que cela à tendance à s’estomper au fur à mesure des mise à jour de ces logiciel libres. Mais parfois certain logiciel sont reconnu comme dépassant les performance des logiciel professionnel ou étant utiliser par des professionnels du secteur. Comme nous le verrons pour certain logiciel de cette liste.

Blender

C’est quoi ?

Blender c’est la Royce des logiciel libre dans le domaine de la modélisation  et de rendu 3D rivalisant avec les logiciels propriétaires tel que 3DS Max, Maya (anciennement Waveform) et Cinéma 4D.

Muni de moteurs physiques simulant les solides, les solides mous et les liquides, la gestion des poils et des cheveux, les tissus et les particules, permettant l’animation d’objets complexes. Blender intègre aussi une solution de montage vidéo, et un moteur de jeu 3D.

Vous pouvez même aussi utilisée le moteur de rendu 3D RenderMan développée par Pixar directement sur Blender. RenderMan est utilisée majoritairement dans l’industrie du cinéma et dans tout les créations de chez Pixar de Toys Story à Cars 3.

Quelque exemple de création  réaliser avec Blender ?

Blender a prouvé sa qualité à travers les film de la fondation Blender, dont les derniers, Cosmos Landromat et Agent 327, sont de qualité professionnelle.

Un exemple de projet réaliser sous Blender avec Agent 327 opération barbershop.

Ou puis-je apprendre à l’utiliser ?

Vous pouvez commencer par le cours de Open Class  Rooms anciennement le Site du Zéro.

Sur quelle système d’exploitation est t’il disponible ?

Blender est téléchargable pour Microsoft Windows 10, 7, Vista, GNU/Linux et Mac OS  à partir de la version 10.6.

Ou le télécharger ?

Vous pouvez le télécharger ici.

 

GIMP (GNU Image Manipulator Program)

C’est quoi ?

GIMP est un logiciel  utilisés pour la retouche et l’édition d’image, le dessin à main levée, le photomontages.

C’est l’équivalent libre se rapprochant le plus de Photoshop.

Quelque exemple de création  réaliser avec Gimp ?

Zemarmot et un film d’animation sous License libre actuellement  en cours de réaliser qui utilise le logiciel GIMP et le plugin GIMP Motion qui permettant de crée des dessins animée. Cette exemple est la preuvent que vous pouvez réaliser beaucoup de chose avec ce logiciel.

Ci-dessus un concept art du film ZeMarmot réalisée avec GIMP actuellement en développement.

Sur quelle système d’exploitation est t’il disponible ?

Gimp est compatible avec Mac OS, Windows, GNU/Linux, BSD.

Ou le télécharger ?

Vous pouvez le télécharger ici.

Krita

C’est quoi ?

Krita est un logiciel de dessins et de retouche d’image actuellement très utiliser qui permet de faire de jolie dessins tout comme GIMP comme le plugin GIMP Motion vous pouvez aussi faire des dessins annimées directement sur le logiciel est sans l’installation de plugin.

Ou le télécharger ?

Vous pouvez le télécharger ici.

MyPaint

C’est quoi ?

MyPaint se concentre d’avantage sur le dessins  et s’avère avoir une interface beaucoup plus simple et claire que Krita ou Gimp. Il est donc très facile d’utilisation.

Ou le télécharger ?

Vous pouvez le télécharger ici.

Mixxx

C’est quoi ?

Mixxx est un logiciel libre pas très connu qui permet d’enchaîner vos musique en soirée (anniversaire, mariage ou autre).  Pour ceux qui connaissent VirtualDJ il est même plus puissant que celui-ci. Il supporte même la plupart des contrôleur DJ du marché et est entièrement customisable. Il possède une fonctionnalité permettant de lancer l’enchainement automatique des musique de façon fluide.

Ou le télécharger ?

Vous pouvez le télécharger ici.

La suite LibreOffice (Writer, Calc, Impress, Draw, Math, Base)

C’est quoi ?

LibreOffice (parfois abrégé en LibO ou LO ) c’est la suite bureautique libre de référence et un équivalent à la suite Office de Microsoft.  Si vous étiez habitué à Open Office vous pouvez passer aisément à Libre Office puisque c’est exactement la même interface de même que vos fichier sont compatible entre les deux logiciel. Si vous venez de Word sachez que depuis la version 5.3 Libre Office propose un équivalent au ruban introduit avec la suite office 2007.

Il est maintenant possible de modifier l’interface de LibreOffice pour afficher un ruban comme sous Word mais rassuré vous pouvez aussi garder l’ancienne interface.

Le gros point positive de LibreOffice  peut importe si vous avez une ancienne version ou une nouvelle version vous pourrez toujours lire vos fichier contrairement à Word ou Excel.

Ou le télécharger ?

Vous pouvez le télécharger ici.

 

Firefox

C’est quoi ?

Mozilla Firefox est un navigateur web libre et gratuit, développé et distribué par la Mozilla Foundation avec l’aide de milliers de bénévoles8,9 grâce aux méthodes de développement du logiciel libre/open source et à la liberté du code source. La version 37 actuellement en développement apportera une amélioration notable en terme de performance.

Ou le télécharger ?

Vous pouvez le télécharger ici.

 

Darktable

C’est quoi ?

Vous avez des photo de vacance à classer ou à retoucher Darktable est fait pour vous.

darktable est un logiciel libre de traitement photographique, qui permet de cataloguer ses photographies numériques et d’appliquer des corrections et effets divers à ces images. Il autorise également le contrôle en temps réel d’appareil photographique numérique (APN) connecté par un câble à un ordinateur. Il est disponible gratuitement pour la plupart des distributions Linux, OS X et Solaris sous licence GNU General Public version 3 ou ultérieure. Il est avec RawTherapee et Rawstudio, un des principaux logiciels de dématriçage libre.

Ou le télécharger ?

Vous pouvez le télécharger ici.

VirtualBox

C’est quoi ?

VirtualBox est un logiciel libre d’émulation d’ordinateur sur un ordinateur physique. Il peut être utiliser pour créée un ordinateur virtuel sur laquelle est installée par exemple un système d’exploitation comme : Microsoft Windows 7, Debian GNU/Linux 9, Ubuntu 17.04. C’est très pratique pour tester de nouveau système d’exploitation.

Ou le télécharger ?

Vous pouvez le télécharger ici.

C’est quoi ?

Scribus est un logiciel de publication assistée par ordinateur (PAO), distribué sous licence libre GNU GPL. Basé sur le frameworkmultiplateforme Qt, il fonctionne nativement sur les systèmes UNIX, Linux,Mac OS X, Windows et OS/2. Il est connu pour son large éventail de fonctionnalités de mise en pages, comparable aux principales applications professionnelles dans le domaine de la PAO, telles que Adobe InDesignou QuarkXPress.

Scribus est conçu pour permettre la mise en pages de façon flexible, et a la capacité de préparer des fichiers pour des équipements professionnels d’impression. Il peut également permettre de créer des présentations animées et interactives, et des formulaires PDF. Il peut servir à réaliser des dépliants, des plaquettes, des livres et des magazines, et tout type de document destiné à être imprimé ou à être visualisé sous forme numérique.

Quelque exemple de création  réaliser avec Scribus ?

Le magazine généraliste Le Tigre était entièrement réalisé avec des logiciels libres dont Scribus4.

Ou le télécharger ?

Vous pouvez le télécharger ici.

FreeCad

C’est quoi ?

FreeCAD est un logiciel de modélisation 3D libre pour la CAO, IAO,PLM, orientée vers le génie mécanique et le design de produits, mais qui vise également d’autres disciplines, telles que l’architecture ou d’autres branches de l’ingénierie.

Ou le télécharger ?

Vous pouvez le télécharger ici.

Enregistrer

Une Bidouille d’Allaire …. ven 10 mars 2017

Vendredi  dernier, à l’occasion de l’atelier bidouille d’Allaire, nous sommes 4 à 5 membres de l’association réunis, échangeant sur nos projets. Lorsque 2 visiteurs nouveaux arrivent….

Le premier est un homme dans la quarantaine, technicien dans les piscines, bidouilleur touche à tout et passionné de pêche à la ligne. Il vient nous voir pour un projet précis.  Il a avec lui un objet simple de son quotidien qu’il aimerait reproduire en 3D car il lui en faut un deuxième identique qu’il a perdu…. Cool, un truc a Bidouiller …
Aussitôt, son objet est modélisé, L’impression lancée. 2 Heures plus tard, il repartait chez lui,  heureux en nous renvoyant des photos de son lit de pêche qu’il a réparé grâce à cette impression 3D. Quelle valorisation de se sentir utile…

Seconde visite, Une mère et son fils collégien , déjà  brièvement rencontrés samedi 4 mars lors du premier atelier maker organisé à  la médiathèque. Il vient avec son petit sac et sa bidouille.  Il s’agit en fait d’une planche percée de petit trous avec une LED de couleur dans chaque. Chaque LED est reliée à une résistance puis au port d’un Nano ordinateur RaspBerry Pi  ou un programme en Python, les fait clignoter selon des séquences.  Bref un petit chenillard lumineux. 12 ans !!! le gamin, cela nous laisse songeur. L’enfant au fur a mesure de sa démonstration et de nos questions  s’épanouit… (Enfin, des gens qui comprennent ce que je dis quand je parle de ssh et de gpio).

On sent la mère soulagée également, elle me confie être désemparée devant le hobby  et les capacités  de son fils. Je leur propose de le mettre en réseau avec d’autre jeunes collégiens précédemment identifiés et lui propose, autour du jeu Minecraft dont il est fan également de s’inclure dans un projet consistant à constituer une équipe de cafteurs locaux avec pour objectif de faire la médiathèque de Redon avec Minecraft.

Bienvenue a la bidouille d’Allaire .

Mon PC, mon usine.Par Cyrille Laullier, Samedi 4 Mars, Médiathèque de Redon.

img_20170304_105624
Beau succès pour une première.
Un douzaine de personnes assez pointues et très intéressé se sont rassembler Samedi 4 Mars à la médiathèque de Redon pour assister à l’introduction par Cyrille Laullier de notre petit cycle d’initiation à la culture maker: Mon PC = Mon usine.

Retrouvez le slide de Cyrille avec toutes les liens, ci-dessous:

170227_monpcmonusine

Pour la prochaine animation du 18 mars, ce sera l’impression 3D. Alors n’hésitez pas à utiliser Fusion 360, Sketchup ou FreeCAD pour concevoir vos pièces en 3D.

Enregistrez au format STL et on pourra essayer de les imprimer pendant l’animation.

A dans 15 jours…

Ateliers Numériques Médiathèque de Redon

Bonjour à tous,
le-livre-de-la-jungle-dix-preuves-que-les-ours-peuvent-etre-aussi-gentils-que-baloo-gifs

Telle une jonquille, une primevère ou un Ours des montagnes (a vous de choisir) la Vilaine Bidouille  et ses makers sortent de leur torpeur hivernale.

Afin de reconstituer les réserves de nourriture intellectuelle consommées durant l’hiver et attaquer cette nouvelle année que l’on souhaite profitable pour le projet de fablab que l’on porte,

Nous vous proposons, a partir de Demain (4 mars), un nouveau rendez-vous.
le samedi matin de 10h à 12h30 tous les 15 jours à la Médiathèque de Redon (salle d’animation du château).

Plusieurs thèmes et contenus ont été programmés en partenariat avec d’autres « grizlis locaux » (Les mulots, la ferme des écotais) afin de mieux nous régaler (cf ci dessous)

L’objectif est double, porter la culture maker sur notre territoire et rassembler autour du projet pour y intégrer de nouveaux acteurs.

Bref, quoi de plus alléchant pour sortir de sa grotte !

pour le collectif,

sur ouest france Redon: