Créer des templates dans Atom

Salut les barbus!

Vous qui programmez (et je sais qu’il y en a, pas la peine vous cacher!), peut-être utilisez-vous l’éditeur Atom?

C’est ce que j’utilise, en tout cas pour développer en C++ sur mes différents joujoux (choux, cailloux, genoux, hiboux, joujoux, poux… oui c’est bien un x… Mais c’est bizarre à lire quand même), Arduino, ESP8266 et Teensy.

Et s’il y a bien une chose qui me fatigue, c’est de devoir toujours taper la même chose à chaque fois que je crée une nouvelle classe:

maclassequitue.h:

maclassequitue.cpp:

Ce n’est pas grand chose, mais c’est monstre rébarbatif de devoir se taper ça à chaque fois.

J’ai trouvé un plugin Atom permettant de créer des templates pour générer ce qu’on veut en deux coups de cuillère à pot. Il s’appelle Atom Smart Templates.

Une fois installé, voici comment j’ai créé ma template pour générer les deux fichiers à partir d’un nom de classe:

  • Menu Packages/Smart Templates/Open templates folder
  • Dupliquer le répertoire de la template de base (BaseTemplate), et l’appeler cpp (nom totalement arbitraire)
  • Virer tout sauf le fichier index.js (qui contient la configuration de notre template)
  • Créer deux fichiers: header.template et implementation.template (noms tout aussi arbitraires)

Le plus gros est fait 🙂

Voici le contenu de mon index.js:

La variable params contient la liste des paramètres à demander à l’utilisateur pour pouvoir générer les fichiers.

Chaque item généré dans la fonction rules prend en source nos deux fichiers .template, et construit leurs noms finaux en fonction du paramètre ClassName qui a été saisi.

Ensuite, nous devons créer notre fichier header.template:

Et le fichier implementation.template:

Facile, non?
Et surtout maintenant, quand je veux créer une nouvelle classe, je n’ai qu’à faire un clic droit dans le répertoire concerné, Create files from template, clic sur C++ class, je rentre le nom de ma classe et paf!

Prototype de contrôleur à base de carte SD pour Teacup

Salut!

Comme je l’expliquais dans mon précédent article, je suis passé sur Teacup et mon contrôleur LCD/SD d’origine n’est pas compatible avec ce firmware. Et je n’ai pas du tout envie que mon imprimante 3D soit dépendante d’un PC pour pouvoir fonctionner.

Teacup gèrerait a priori la présence d’une carte SD, mais visiblement il  faut envoyer du G-Code pour lister les fichiers (via un PC, donc…), et l’ensemble n’est pas vraiment documenté. Même chose pour l’affichage.

Alors je me suis lancé dans la conception d’un contrôleur qui discutera avec le firmware de la machine, quel qu’il soit. Rien que ça, mon pote!

Idéalement, il disposera d’une interface web (ESP8266 powaaa!), mais pour le moment j’ai fait un proof of concept avec une Teensy 3.2, un afficheur OLED SSD1306 et un lecteur de carte microSD. Et le pire dans tout ça, c’est que ça a l’air de marcher!

Voici le montage en mode breadboard:

A gauche, l’écran, au milieu le lecteur microSD, à droite la Teensy, et en haut l’Arduino Mega 2560 (avec Teacup). Au dessus de tout ça, un sacré bordel de fils. A gauche, une résistance de 220Ω qui n’a rien à faire dans le montage, mais oh, je suis encore chez moi, non?!

La communication entre mon petit bazar et Teacup se fait par port série. Après l’envoi de chaque commande, le programme attend l’acknowledgement du firmware (un bête « ok ») avant d’envoyer la commande suivante.

Pour le moment, j’affiche juste la ligne courante sur l’écran, mais je vais faire évoluer ça pour afficher les températures et l’avancement de l’impression.

Changement forcé de firmware sur l’imprimante 3D

Une nouvelle année s’ouvre à nous, et je vous la souhaite bien bonne!

Pour démarrer en beauté, j’ai commencé par « casser » mon imprimante 3D. Bravo champion!

L’histoire a commencé (enfin c’est ce que je pense) alors que je regardais jusqu’où je pouvais pousser mon plateau Y, dans l’idée d’imprimer une pièce assez grande (une pièce de quadricoptère, mais j’aurai tout loisir de revenir là-dessus dans les mois à venir!)

Bref, suite à ça, je vais pour imprimer une petite pièce en PLA, et là, paf! le plateau ne chauffe pas. Je contrôle la résistance du plateau, 1Ω et quelques (correct), mais à la sortie du RAMPS, j’avais 2 pauvres volts qui se couraient après pour alimenter le plateau (normalement on est à 12…)

Visiblement un fusible ou un Mosfet a grillé à cause d’un court circuit que je suppose provoqué par ma poussée un peu extrême du plateau (oui, les connexions sont artisanales…)

Alors je ne me démonte pas de souci, je remplace le RAMPS par un deuxième que j’avais en stock. Je rebranche tout mon petit bazar, j’allume, et là… j’ai plus rien compris au fonctionnement des moteurs. X et Y nickel, par contre Z et extrudeur ne tournaient plus. Ou si. Ah, et puis finalement non.

J’ai flashé l’Arduino avec la dernière version de Marlin, pas mieux. Alors après analyse, un des Pololus avait grillé, mais même en le remplaçant, j’avais un fonctionnement totalement aléatoire des moteurs Z et E…

Au bout d’une journée et demie d’agacement intensif et d’une envie (heureusement réprimée) de sauter dessus à pieds joints, j’ai décidé d’installer un autre firmware déjà essayé dans le passé sur une autre machine: Teacup.

Hé ben tu l’crois, tu l’crois pas: tout est rentré dans l’ordre. Les 4 axes fonctionnent, les endstops aussi, le plateau chauffant et la buse aussi, il n’y a plus qu’à tout recalibrer (depuis l’écriture ce cet article, c’est fait et ça marche nickel).

Des fois faut pas trop chercher… En tout cas pour moi, Marlin, c’est fini. Non Marlin, ne dis rien, je ne t’écouterai pas! Mais il va quand même que je trouve un palliatif pour pouvoir imprimer depuis une carte SD parce que là, je dois me brancher en USB depuis le PC…

Hadopi

Rholala, le drame… J’ai reçu un email de la Haute Autorité pour la Diffusion des Oeuvres et la Protection des droits sur Internet.
Je réalise à l’instant qu’il manque quelques mots dans l’acronyme. Mais il faut bien reconnaître que HAPLDDOELPDDSI, ça aurait été moins facile à mémoriser…

Bref, « Votre connexion a été utilisée pour mettre à disposition, sans autorisation, des oeuvres protégées par le droit d’auteur, avec le(s) logiciel(s)/protocole(s) transmission. »

[Yeux de chaton ON]

chat-potte
Attention! Cette image provient du film Shrek, des studios Dreamworks. Je ne veux pas d’ennuis! Je suis innocent! Aaaaah!

Transmission, je ne l’utilise que pour télécharger mes distributions Linux.

Donc il n’y a plus qu’une possibilité: un virus!! quelqu’un a dû pirater mon ordinateur et l’exploiter pour télécharger illégalement des fichiers à mon insu! Et moi qui croyais que sous Linux on était peinard… Enfer! Damnation!

Je ne sais pas si j’arriverai à me protéger durablement des pirates, alors j’ai préféré prendre les devants et me protéger de l’Autorité en souscrivant à un service de VPN (Private Internet Access pour ne pas le nommer) pour 39$ par an (Merci Patrick pour en avoir vanté les mérites). Au moins, si ces salauds de pirates continuent à exploiter mon PC pour télécharger des fichiers sous copyright, je serai au moins protégé de l’Autorité.
[Yeux de chaton OFF]

LOL

Mais c’était quand déjà ? (partie 2)

Salut à tous!

Allez, je mets les pieds dans le plat. Vous vous rappelez mon dernier article à l’arrière goût nostalgique? Non? Mais siiiii… Il est juste en dessous, là… J’expliquais que cet article avait pris le pas sur ce que je désirais réellement écrire ce jour-là. Hé bien voilà, depuis longtemps, je cherche des dates. C’est con hein, mais par exemple, « C’était quand la dernière fois que j’ai changé de caleçon? »

Pardon? Ah. On me fait signe en régie que cet exemple n’est pas génial. Disons plutôt « je fais le plein de ma voiture tous les combien? Et combien ça me coûte, en cumulé? »

Ou encore « c’était quand la dernière fois que j’ai eu mal au crâne? » Ça pourrait être intéressant de savoir si j’ai plus souvent mal à la tête le vendredi ou le samedi, par exemple. Ou plus l’hiver que l’été.

Alors j’ai attrapé mon plus beau clavier et j’ai développé une application web qui permet justement de tracer les événements de ma vie, qu’ils soient ponctuels ou récurrents (c’est surtout intéressant pour les récurrents), et dont je veux pouvoir retrouver les dates plus tard, voire établir des statistiques.

statistics-exampleJe peux aussi faire un rapprochement entre les répétitions du vendredi soir et le mal de crâne du samedi matin (bien que cette corrélation fût déjà établie…)

Et surtout, plus que tout: je saurai enfin tous les combien on change la pile de la pendule du salon! Non mais c’est vrai quoi, elle les bouffe ou bien?

Alors j’ai mis en ligne whenwas.it, et je l’utilise évidemment, puisqu’à la base je l’ai conçu selon mes besoins.

J’y note les cafés que je bois, les jours où j’achète des clopes, les matins où je me lève avec le mal de crâne, quand je fais le plein (et dans ce cas j’indique les montants pour pouvoir calculer automatiquement des cumuls), et pas mal d’autres événements récurrents.

Je me suis dit que ce genre d’application pourrait être utile à pas mal de monde, alors les inscriptions sont ouvertes.

L’interface est responsive, et construite à base d’agrumes avec le très agréable framework materializecss.

Mais qu’est-ce que que je raconte avec mes citrons… Voyez plutôt:

when-was-it-nico

Et si vous pensez que ça peut vous être utile, alors n’hésitez pas!

Tschüss!

C’était quand déjà?

 

C’était le 18 mai 2011, bien sûr!

Ce jour-là, je postai mon premier article sur ce blog, c’est fou… 5 ans, 5 mois et 18 jours.

A l’époque, on venait d’emménager et je modélisais ma salle de bain dans Maya. Motivé le gars! J’ai donc commencé à parler de 3D, et pis je suis passé sous linux.

Après ça, j’ai acheté ma première Arduino Uno (qui fut un déclencheur), et j’ai commencé à bricoler un peu d’électronique. Ecran LCD, baromètre (qui a un succès fou auprès des lecteurs!). Ensuite, un petit retour à la programmation avec quelques projets web, et arriva le jour… Du montage de l’imprimante 3D.

Ouvrons une parenthèse:

Hé, d’ailleurs… je réalise à l’instant un truc, là: jusqu’alors, zéro commentaire, les gars(et peut-être les filles, qui sait) !

Zéro commentaire, c’est sympa hein… Non mais je vous jure…

Fin de la parenthèse.

Où en étais-je… Oui! Donc, je me suis lancé dans l’impression 3D en août 2013 (je m’aide hein, j’ai la liste des posts à côté).

A ce moment, j’ai touché deux cordes sensibles: la mienne et la vôtre. La mienne, parce que je me suis rendu compte que ça pouvait libérer, délivrer l’imagination, et on peut vraiment s’amuser très fort

avec cette machine. Et la vôtre pour les mêmes raisons bien sûr!

Alors bon, faut avouer que les réglages ont été assez longs, puisque j’ai mis un bon mois à avoir un calibrage enfin correct (tout était dans l’accélération Z et dans la ventilation de la buse…). Tu plonges là dedans, tu découvres, et c’est vraiment passionnant.

Et du coup c’est un peu comme les tatouages, la chirurgie esthétique, l’héroïne ou les M&M’s: il t’en faut plus.

[Ah tiens au passage, j’ai un brouillon de tuto pour exploiter un module GPS EM406A avec une Arduino, ça intéresse quelqu’un?]

Il t’en faut plus disais-je alors tu te mets à fabriquer une fraiseuse CNC 3 axes, avec les pièces que tu as modélisées et imprimées. Très utile l’imprimante 3D!

Oh merde, Charlie hebdo… Putain.

[en fait je parcours ma liste de posts du plus ancien au plus récent]

Non content de la machine 3 axes (et c’est vrai qu’elle n’était pas précise), J’ai monté un CoreXY sur 2 axes pour jouer avec un laser. Ficelles et poulies, c’était bien fun et rapide!

Et la Shapeoko est arrivée, je me suis dit « Rhaaa ça c’est cool, une bonne machine robuste et préciiiiise! Enfin pouvoir sortir des trucs sans se faire chier! »

Bah tu parles! J’ai cru que je n’allais pas m’en sortir avec celle là et sa connexion USB qui sautait pendant l’usinage, c’était loin d’être top!

Je salue au passage Jorge de Carbide3D, qui est un des ingénieurs électroniciens. Il a tout fait pour m’aider, il m’a même envoyé une nouvelle version de la carte de la Shapeoko, mais rien n’y a fait.

J’ai donc fait ma propre carte de contrôle, et ça a marché avec une astuce, mais ça a marché, merde! Du coup j’utilise toujours cette machine avec plaisir. Tout comme l’imprimante 3D d’ailleurs, qui me sert régulièrement à fabriquer des petites pièces.

Ah oui, après ça je me suis re-emballé avec mon laser et j’ai réécrit un programme qui permet de générer du G-Code pour graver des images. C’était cool ça.

Rhoooo et l’ESP8266 est arrivé (grâce à Sandrine de bloguelinux.ca), la folie du WiFi! C’était rigolo de faire ces adaptateurs pour le PC 🙂

Et un thermomètre connecté (à base de DHT22+ESP8266), dont les données sont accessibles ici. Comme ça Olivier, tu pourras voir à quel point ça caille dans ma maison l’hiver 😉 !

Alors j’en profite pour saluer la patience de ma femme, qui supporte tant bien que mal le fait que la maison soit un atelier… Merci ma poule 🙂

Publication de WP Login Door (au fait, vous avez essayé? il y a aujourd’hui plus de 60 utilisateurs actifs, c’est pas foufou mais ça fait plaiz)

Et enfin, nous en sommes là, novembre 2016.

Ah si, il y a un truc marrant, ce sont les statistiques de visite du site!

Il fallait quand même que j’en parle. Figurez-vous que vous êtes plus nombreux à arriver ici pendant l’hiver, que pendant l’été. Et vraiment, une belle sinusoïde, quoi:

selection_001

C’est pas fou une alternance pareille? Et le pire vous savez quoi? c’est que les deux sommets ont exactement la même hauteur. Certains y verraient certainement la main de dieu; perso j’y vois une courbe.

Allez, je ne vous embête pas plus, il est temps d’aller se coucher. Et j’ai un gros article à suivre…

Atténuer la lumière bleue sur les écrans

Salut tout le monde!

Je voulais partager avec vous trois outils pour trois plateformes, dont je ne peux plus me passer.
Leur finalité est la même: réchauffer (ajouter du jaune/rouge) la couleur de l’écran pour limiter l’émission de lumière bleue. La lumière bleue est connue notamment pour fatiguer les yeux avoir des effets sur la qualité du sommeil (http://www.lapresse.ca/vivre/sante/201412/02/01-4824576-la-lumiere-bleue-et-notre-sante.php)

J’utilise au quotidien trois programmes donc:

  • A la maison, sous Linux: redshift
  • Au bureau, sous Windows: f.lux
  • Sous Android, pour lire sur la tablette le soir: twilight
  • Sous iOS et OSX… Je plaisante.

Alors bien évidemment, pour faire de la retouche photo, c’est nul parce que les couleurs sont altérées; mais pour aller sur le net, lire ou développer, je peux vous garantir que c’est le top.

D’ailleurs, si vous voulez tester un de ces programmes, essayez-le un moment, puis désactivez-le pendant 30 secondes et vous sentirez bien la différence!

Surfaçage du plateau de la fraiseuse

Ce week-end, j’ai fait quelque chose que je voulais faire depuis longtemps: mettre à niveau le plateau de la machine.
Depuis le début, il présentait des variations de niveau, jusqu’à 0.6mm en plus ou en moins.

Alors pour graver des circuits imprimés ce n’est pas grave (paradoxalement) grâce à l’outil d’autoleveling de bCNC qui compense les variations de hauteur. Mais pour de la découpe standard de bois par exemple (dont la surface n’est pas conductrice, jusqu’à preuve du contraire), un coup il va rester de la matière en bas, ou alors la fraise va carrément attaquer le plateau de la machine…

Bref: pas bien!

J’ai trouvé sur ebay une fraise à surfacer de 21mm de diamètre, avec une queue de 6mm.

fraise-surfacage
Fraise à surfacer de 21mm
Fraise à surfacer de 21mm
Vue de dessous

Je crois que j’en avais parlé dans un précédent article, mais j’ai un problème avec les queues de 6mm: elles ne sont pas correctement serrées dans la pince de 1/4 de pouce (6.35mm). Jusqu’à présent j’étais contraint d’enrouler du papier alu autour pour compenser les 0.35mm et pouvoir serrer la fraise correctement… Pas génial comme truc.
Mais avec la défonceuse, une pince de 8mm était livrée, et j’ai trouvé sur ebay également un adaptateur 8mm->6mm.
C’est juste un cylindre de métal fendu qu’on enfile autour de la queue (de la fraise, bande de cochons!) avant de l’insérer dans la pince. Et ça marche du feu de dieu.

Enfin un élargisseur de queue qui marche!
Enfin un élargisseur de queue qui marche! (bon, ça la passe de 6mm à 8mm…)

J’ai utilisé l’outil d’autoleveling de bCNC pour mesurer les écarts de hauteur maximums, en déplaçant une chute de circuit imprimé sur la surface pendant le sondage. L’écart max étant de +-0.6mm, j’ai fraisé toute la surface à -1mm, et je me retrouve désormais avec une surface bien parallèle aux axes X et Y de la machine.

CQFD.

Une belle table bien plane!
Une belle table bien plane!