La CASIO fx-92+ a une petite résolution de 192 pixels (-95 à 96) de large et 47 pixels de haut (-23 à 23). Ceci permet malgré tout d’obtenir quelques jolis visuels :
La CASIO accepte des nombres sans les arrondir jusqu’à 12 chiffres, ce qui en binaire fait :
>> bin(999999999999)
'0b1110100011010100101001010000111111111111'
Soit l’équivalent de 40 pixels. Cependant, si tous les pixels étaient à 1, on obtiendrait le nombre :
>> int('0b'+'1'*40, 2)
1099511627775
qui a 13 chiffres. On peut donc soit se restreindre à 39 pixels de haut où être conscient qu’avec 40 pixels il pourra y avoir éventuellement des anomalies. Nous prendrons ce petit risque.
Partie Gimp
Créez une image de L x 40 pixels où L est entre 1 et 192. Mettre l’image en noir et blanc (Menu Image – Mode – Couleurs indexées – Utiliser une palette noir et blanc 1 bit). Faire votre dessin.
Filtres – Python Fu – Console et coller ce script :
def gimp2fx92():
img = gimp.image_list()[0]
drw = pdb.gimp_image_active_drawable(img)
L = pdb.gimp_image_width(img)
H = pdb.gimp_image_height(img)
for x in range(L):
for y in reversed(range(H)):
v = 0 != sum(list(pdb.gimp_image_pick_color(img,drw,x,y,1,0,0))[:-1])
c = v + (2 * c if y != H - 1 else 0)
print c
Pour chaque x entre 0 et la largeur L de l’image, on parcourt les pixels y de la colonne. La valeur de v sera égale à 0 si le pixel est noir. A chaque étape c est multiplié par 2 et on ajoute 1 s’il y a un pixel noir.
En lançant le script on obtient une liste d’entiers. Voici un exemple avec l’image ci-dessous :
Si on décompose 402653184 en binaire on obtient :
>> bin(402653184)
'0b11000000000000000000000000000'
Les 27 zéros correspondent aux 27 cases noires de la première colonne suivi de 2 cases blanches (les ’11’) et le reste est noir :
Pour décomposer l’entier en nombre binaire sur la CASIO, on va utiliser des divisions successives par 2, ce qui en Python donne :
def dec2bin(a):
s = ''
while n > 0:
a /= 2
s += '0' if a == int(a) else '1'
a = int(a)
return s
>> dec2bin(402653184)
'00000000000000000000000000011'
Partie CASIO fx-92+
Script pour la CASIO :
-95 → B
S'orienter à -90
Répéter jusqu'à B = 95
Aller à x = B , y = 22
? → A
B + 1 → B
Répéter 40
A ÷ 2 → A
Si A = Ent(A)
Stylo écrit
Avancer de 0 pixels
Fin
Stylo relevé
Avancer de 1 pixels
Ent(A) → A
⤴
⤴
Aller à x = 110 , y = 0
Ainsi, en lançant le programme CASIO et en tapant tous les nombres entiers fournis par Gimp, on aura l’image finale !
Macro Excel
Si vous avez la clé USB CASIO avec l’émulateur de la fx-92+ Spéciale Collège, il est possible de créer une petite macro qui va envoyer les différents nombres à intervalles réguliers. Pour cela copiez-collez les nombres dans un classeur Excel puis ALT+F11 pour accéder à VBA, Insertion – Module et coller le code :
Sub data2fx92()
Application.Wait Now + #12:00:05 AM#
For Each cellule In Selection
If cellule.Value <> "" Then
SendKeys cellule.Value & "~"
Application.Wait Now + #12:00:12 AM#
End If
Next
End Sub
Lancez l’émulateur CASIO, tapez le programme et le lancer. Il s’affiche A?
Dans Excel sélectionnez uniquement les données (CTRL + A) mais PAS toute la colonne (qui contient 1 million de cellules !!). Lancez la macro et dans les 5 secondes qui suivent retournez dans l’émulateur (si c’est trop rapide modifiez la ligne 12:00:05 en 12:00:10 pour vous laisser par exemple 10 secondes). Toutes les 12 secondes un entier est envoyé à la machine et la colonne s’affiche à l’écran.