mardi 2 juin 2015
Arduino, compilation séparée
Par Michel Billaud, mardi 2 juin 2015 à 11:41 :: Bidouilles
Découper en classes, c'est bien, la compilation séparée c'est mieux : ça évite de copier-coller des bouts de code. On continue sur l'exemple.
Aller au contenu | Aller au menu | Aller à la recherche
mardi 2 juin 2015
Par Michel Billaud, mardi 2 juin 2015 à 11:41 :: Bidouilles
Découper en classes, c'est bien, la compilation séparée c'est mieux : ça évite de copier-coller des bouts de code. On continue sur l'exemple.
lundi 1 juin 2015
Par Michel Billaud, lundi 1 juin 2015 à 21:47 :: Bidouilles
Pense-bête, en pratique, pour utiliser un Makefile
jeudi 28 mai 2015
Par Michel Billaud, jeudi 28 mai 2015 à 19:15 :: Bidouilles
Quand on joue avec le clavier (voir article précédent) on tombe de suite sur le problème des rebonds sur les boutons. Quand on appuie sur un bouton, le contact n'est pas très stable pendant un petit moment. L'idée est d'ignorer ces oscillations pendant un moment, et que ça soit la classe Keypad qui s'en occupe.
dimanche 24 mai 2015
Par Michel Billaud, dimanche 24 mai 2015 à 19:42 :: La maison
Il y a une classe `LiquidCrystal` pour piloter l'afficheur du LCD Keypad Shield, mais elle gère seulement l'affichage. Pour les boutons, on est priés de se débrouiller avec analogRead(). Pas très sympa. D'où l'idée de faire une petite classe pour s'occuper des boutons.
jeudi 1 janvier 2015
Par Michel Billaud, jeudi 1 janvier 2015 à 10:14 :: Bidouilles
Me suis décidé à rebrancher la tablette Trust évoquée dans les lointains épisodes précédents (La pile d'origine marche toujours !)
Cette fois-ci c'est sous Debian Wheezy (7.7, comme le temps passe).
Soyons bref, j'ai suivi les indications de https://help.ubuntu.com/community/TabletSetupWizardpen Plus précisement
xorg-input-wizardpen-0.8.1.tar.bz2 prise sur https://launchpad.net/wizardpen/usr/share/hal/fdi/policy/99-x11-wizardpen.fdi , mais je ne suis pas sur que ça serve à quelque chose, vu que hal n'esr pas installé sur ma machine. Et que j'avais oublié un guillemet autour du nom de la tablette, ça a marché quand même.<match key="info.product" contains="UC-LOGIC Tablet WP5540U">
et puis voilà, ça marche.
Avec tous mes voeux !
dimanche 17 février 2013
Par Michel Billaud, dimanche 17 février 2013 à 13:11 :: Choses diverses
S'apercevoir en pleine réunion de travail, ou en cours, qu'on était parti dans les nuages depuis un temps indéfini, c'est arrivé à tout le monde. Et de fournir aussitôt des explications : la réunion était sans intérêt, le cours était terriblement ennuyeux (je compatis avec mes étudiants), on aurait dû se coucher plus tôt, etc. Tout ça, c'est pas faux (à part mes cours qui sont passionnants). Quand ça arrive à quelqu'un d'autre (de plus jeune), on accuse aussi le déficit d'attention lié à l'abus de distractions, la propension à se mettre au travail avec la télé allumée, de la musique dans le casque et un oeil sur facebook. Et le gâtisme précoce pour les plus vieux.
Il reste une explication : nous sommes tous naturellement enclins à la dispersion de l'attention.
Et en réalité c'est bien pire que ce qu'on peut imaginer, l'attention c'est une vraie savonnette qui n'arrête pas de s'échapper. Dans la vie courante nous croyons être à peu près concentrés, mais nous ne faisons en fait que suivre le fil des sollicitations.
Vous croyez sûrement que j'exagère ? Une petite expérience amusante, juste 5 minutes, vous permettra de constater l'ampleur du phénomène.
5 minutes pour voir
Il vous faut peu de choses, d'abord trouver un endroit à peu près calme, où personne ne viendra vous déranger toutes les 3 minutes. Une chaise chez soi, un banc dans un parc, etc, ça fait l'affaire. Une montre ou un réveil pour voir l'heure. Et surtout la détemination de mener l'expérience coûte que coûte à son terme, 5 minutes, pas moins. Quoi qu'il arrive.
Diable, direz-vous, dans quoi on s'embarque, que fait-on de si difficile qu'il faille prendre une telle résolution ?
Et bien, rien, justement. Nichts, nothing, nada, niente. Y a rien à faire. Et c'est ça qui va causer des réactions que vous allez pouvoir observer : l'attention qui s'en va, qui revient, etc.
Bon, si, en fait, vous allez faire quelque chose. A moins de pratiquer assidument l'apnée, en 5 minutes vous allez forcément respirer à un moment où à un autre. Vous n'êtes pas là pour du sport extrême, donc normalement vous respirez, 5 à 10 fois par minute, sans mes précieuses indications. N'y changez rien. Ce que vous allez faire, c'est juste compter ces cycles respiratoires : 1 la première fois que vous expirez, 2 la seconde etc. C'est quand même pas dur. Là il va arriver des choses
et vous continuez jusqu'à la fin des 5 minutes. C'est tout.
Ce comptage, n'en faites pas un but. Ca n'a pas d'importance d'arriver ou pas à 10. Il n'y a rien à gagner. Le comptage c'est juste un moyen de voir quand on est présent et quand on ne l'est pas. Ou plutôt, quand on revient à la présence après un égarement. Si on voit qu'on était parti, c'est qu'on est revenu.
Ce qui arrive aussi, c'est que vous vous rappelez tout d'un coup que le frigo est vide. Que vous n'êtes pas sûr d'avoir raccroché le téléphone. D'avoir répondu à la carte postale de Noël. Et qu'il faut absolument que vous vous en occupiez tout de suite, maintenant, immédiatement. Et hop, vous êtes peut être même debout avant d'avoir compris ce qui se passait. Rien de grave, rassurez-vous. C'est juste votre esprit, qui, légèrement privé de distractions, est allé piocher un vieux truc dans la mémoire, et lui a donné un habillage dramatique pour pouvoir jouer avec. Revenez à 1.
Bon, bref, vous allez voir que vous vous arrivez rarement à 10. Ce qui représente une malheureuse petite minute ou deux (la respiration ralentit au bout d'un moment). Hé oui, on en est là. Inutile de vous dire que vous n'arrivez pas à suivre les réunions de plus d'une demi-heure : le délai est beaucoup plus court !
Et après ?
En recommençant ,plusieurs fois l'expérience, vous allez remarquer des changements. Typiquement, un jour, ça compte assez bien. Cool. Le lendemain, ça ne marche pas fort. Le jour d'après, vous vous dites qu'en faisant un effort, ça ira mieux : raté, c'est pire. En suite vous recommencez sans trop y croire, et là ça revient.... En fait, c'est de vouloir réussir quelque chose qui vous en empêche, ça vous distrait. Prenez donc garde à ne pas transformer le comptage, qui est un moyen d'observation, en objectif à atteindre.
C'est la même chose pendant les réunions : le temps que vous passez votre temps à vous dire "zut je suis pas concentré, il faudrait que je me concentre, halala j'y arriverai jamais", c'est du temps en moins pour suivre ce qui se dit.
En fait, si on répète (quelques semaines), l'attention reste plus facilement focalisée. Mais ce n'est pas très amusant comme méthode d'entraînement, faites plutôt du yoga. Ou finalement, faites de n'importe quelle activité (la cuisine, passer le balai, se promener...). Marcher 500 m en faisant attention à bien sentir chaque pas, ça aussi ça ne prend que 5 min. Faites ce que vous avez à faire, et chaque fois que vous voyez que vous pensez à quelque chose, revenez à ce que vous faites.
dimanche 20 janvier 2013
Par Michel Billaud, dimanche 20 janvier 2013 à 05:31 :: Bidouilles
Quelques explications sur la technique de "descente récursive", très utilisée pour faire des compilateurs. Explication par étapes sur un petit exemple de programme qui calcule la valeur d'une expression arithmétique entière comme "(2+2)*20 + 4*(4-1)/2" Ça peut être une idée de traduire le pseudo-code dans le langage de programmation de votre choix.
jeudi 27 décembre 2012
Par Michel Billaud, jeudi 27 décembre 2012 à 11:32 :: Bidouilles
Le désoeuvrement, origine de tous les vices, m'a poussé à chercher ce qu'on aurait pu inventer comme langage de programmation au dessus de l'assembleur, mais en dessous de FORTRAN. Plus basique que BASIC.
Donc j'ai conservé la traduction des formules, et supprimé tout ce qui est structures de contrôle. Hop, plus de boucle DO. Juste une instruction de saut, éventuellement conditionnelle.
Pour commence, voila un exemple simple : somme des carrés de 1 à N
#
# somme des carrés des entiers de 1 à 5
#
print "--- exemple : somme des carres des entiers de 1 à 5"
declare somme, n, i
debut
somme = 0
n = 5
i = 1
boucle
jump fin if i > n
somme = somme + i * i
print i, somme
i = i + 1
jump boucle
fin
print "somme = ",somme
stop
Une instruction/déclaration par ligne. Les étiquettes commencent en colonne 1. La déclaration des variables est obligatoire (mais il n'y a qu'un type entier). Tableaux multidimensionnels indicés à partir de 1. Le saut conditionnel utilise une comparaison (pas de conditions composées). Un jour, peut être, il y aura print/println, et input pour des lectures. Bon, ça y est vous savez programmer.
Et pour faire bon poids, le problème des 8 reines
#
# pb des 8 reines
# m billaud, 27 dec 2012
#
declare n, t(8), q, nb
n = 8 # nombre de reines
nb = 0 # nombre de solutions trouvées
q = 0 # nombre de reines positionnées
success # les reines t1..q sont compatibles
jump display if q == n
q = q + 1 # on essaie d'en placer une autre
t(q) = 1
test # tq compatible avec t1..q-1 ?
declare i
i = 1
testi
jump success if i == q # oui. alors on passe à la suivante
jump next if t(i) == t(q)
jump next if t(i)-t(q) == i-q
jump next if t(i)-t(q) == q-i
i = i + 1
jump testi
# non, on essaie autre chose
# --
next
t(q) = t(q)+1 # autre possibilité pour la même reine ?
jump test if t(q) <= n
fail # non, retour à la reine précédente
q = q - 1
jump next if q > 0
# plus de possibilités
print "On a trouvé", nb,"solutions." # y en a 92, je vous assure.
stop
#
# affichage d'une solution
#
display
declare r
r = 0
i = n
nb = nb + 1
displayloop
r = 10*r + t(i)
i = i - 1
jump displayloop if i > 0
print "solution ", nb,"=", r
jump fail # inutile d'essayer de changer t(n)
Ah, et les tours de Hanoi (hello, HCM !)
#
# tours de Hanoi
#
declare from(10), to(10), nb(10)
declare top
declare f, t, b, n
top = 1
from(top) = 1
to(top) = 2
nb(top) = 3
print "*** tours de hanoi avec n=", nb(top)
loop
f= from(top)
t = to(top)
b = 6 - (f+t)
n = nb(top)
# print "boucle", f, t, b
top = top -1
jump general if n > 1
print f,"->",t
jump next
general
from(top+3) = f
to (top+3) = b
nb (top+3) = n-1
from(top+2) = f
to (top+2) = t
nb (top+2) = 1
from(top+1) = b
to (top+1) = t
nb (top+1) = n-1
top = top+3
next
jump loop if top > 0
stop
L'interprète est écrit en Python, environ 600 lignes. Analyse par descente récursive, traduction sous forme de code intermédiaire : tableau d'objets "instruction" contenant des "Expression" arborescentes, évaluées récursivement.
samedi 28 juillet 2012
Par Michel Billaud, samedi 28 juillet 2012 à 18:44 :: Bidouilles
Je cherchais un exemple simple pour montrer comment parcourir un objet en Java, à l'aide du fameux "foreach" ajouté en Java 1.6 (je crois). J'ai trouvé des exemples pas simples, alors voila.
lundi 2 janvier 2012
Par Michel Billaud, lundi 2 janvier 2012 à 10:35 :: Bidouilles
Sous Linux/Debian tout marche assez bien sur le Samsung N110, sauf les touches de réglage de luminosité. Et comme l'écran est un peu sombre, ça m'embête un peu. En principe il y a des utilitaires comme xbacklight qui devraient s'en occuper, mais ça marche pas.
# xbacklight No outputs have backlight property
Doh!
Voila déjà une manière de faire (avertissement : ça marche pour moi, mais si ça grille votre matériel inutile de me faire un procès, je vous ai prévenu).
sudo setpci -s 00:02.0 F4.B=FF
Vous pouvez remplacer FF par d'autres valeurs en hexadécimal 00 c'est le noir complet (n'essayez pas), FF est à fond.
Sur internet, on trouve des conseils disant d'utiliser l'adresse 00:02.1, qui est l'adresse du contrôleur graphique.
$ lspci | grep Graph 00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller 00:02.1 Display controller: Intel Corporation N10 Family Integrated Graphics Controller
pour moi ça n'a rien donné, et quand j'ai essayé avec celle du machin VGA, ça a marché. Donc voila.
mercredi 21 décembre 2011
Par Michel Billaud, mercredi 21 décembre 2011 à 17:17 :: Bidouilles
Imaginons un gros parc de machines sous linux, qui tournent à peu près mais sur lesquelles il faut faire quelques manips d'administration. Manque de chance, on ne peut pas faire les manips par ssh (par exemple, une mise à jour malencontreuse a viré le pilote de la carte réseau). D'où l'idée de mettre sur une clé USB un script avec les commandes à appliquer, et s'arranger pour que ce script soit lancé dès qu'on insère la clé USB, sans avoir à s'authentifier. Évidemment, il n'est pas question de faire ça avec n'importe quelle clé, et il faut préparer les machines avant.
samedi 12 novembre 2011
Par Michel Billaud, samedi 12 novembre 2011 à 18:48 :: Choses diverses
Le portable Dell ayant cessé de me rendre ses inestimables services (carte graphique kaputt), j'ai investi il y a quelque temps dans un netbook Samsung (NC110) moins cher, moins lourd etc. et qui, muni d"un grand écran et d'un clavier USB, me sert de machine principale à la maison. Reste à y brancher les périphériques existants : le retour de la tablette trust TB 5300
vendredi 11 février 2011
Par Michel Billaud, vendredi 11 février 2011 à 21:10 :: Bidouilles
Un petit problème en migrant mon portable de Debian Lenny à Squeeze : la carte wifi n'était pas reconnue.
mercredi 26 janvier 2011
Par Michel Billaud, mercredi 26 janvier 2011 à 23:17 :: Vietnam
Mon troisième voyage (2011) au Vietnam aura été l'occasion d'une rencontre inattendue : un quatuor d'arnaqueurs. Qui me voyaient très bien dans le rôle du pigeon.
vendredi 12 novembre 2010
Par Michel Billaud, vendredi 12 novembre 2010 à 16:16 :: Bidouilles
J'ai une application Web, dont l'accès est réservé aux utilisateurs qui ont des comptes quelque part. Dans l'idéal il faudrait mettre en place un SSO, mais ça ne dépend pas que de moi. Donc je fais l'authentification par l'intermédiaire du serveur de courrier IMAP : on lui envoie une demande de connexion avec le nom d'utilisateur et le mot de passe dans le bon format, et on voit ce qu'il répond.