Attiny85 & Le Deuligne !!!

Parlez nous de vos projets et de vos idées, imaginez des applications

Attiny85 & Le Deuligne !!!

Message non lude Lionel » Ven 6 Juil 2012 11:20

Bonjour,

fasciné par la possibilité de développer avec l'environnement Arduino sur Attiny, j'ai découvert quelques liens fort sympathiques sur le sujet et ai été tenté d'ajouter la possibilité d'affichage LCD sur ce charmant micro-contrôleur.

Le Deuligne, affichage LCD maison communique en I²C, c'est parfait, ça permet le pilotage de l'écran sur 2 signaux (SDA & SCK) et sur un micro-contrôleur a 8 pattes, les signaux sont comptés !

Maintenant, il faut une librairie I2C pour l'Attiny, ça tombe bien, c'est déjà fait...
http://arduino.cc/playground/Code/USIi2c

Et ensuite... et bien il faut modifier un poil la librairie Deuligne pour qu'elle utilise la librairie I2C adaptée en fonction du micro contrôleur utilisé...

Bon, je l'ai fait (attention, je ne suis pas un codeur... y'a ptet du code qui pique les yeux dedans...), je livre en piece jointe les fichiers modifiés pour que vous puissiez les utiliser tels quel,
Quand je serai grand j'utiliserai Github... mais là, j'y comprends rien...

Maintenant on fait un beau cablage... avec une led de debug :)
Deuligne_Attiny85_bb.png
Deuligne_Attiny85_bb.png (39.23 Kio) Vu 23747 fois


on prends un exemple style Hello world de la librairie Deuligne Custom on le modifie un poil...
c'est à dire on retire l'inclusion de la librairie Wire.h pour la remplacer par la librairie I2C master adaptée a l'Attiny "TinyWireM.h", on ajoute un peu de led qui clignote et...

Code: Tout sélectionner
 /* Deuligne_HelloWorld_Tiny                     Lionel                        05/07/12
 * An example of using Custom Deuligne for the ATTiny85 to display Hello World.
 * Based on HelloWorld_Tiny                     BroHogan                        2/4/11
  * A minor mod was made to use the TinyWireM lib instead of the Wire lib when
 *  compiling for the ARtiny85. The TinyWireM lib must be in your Libraries folder.
 * SETUP:
 * ATtiny Pin 1 = (RESET) N/U                      ATtiny Pin 2 = (D3) N/U
 * ATtiny Pin 3 = (D4) to LED1                     ATtiny Pin 4 = GND
 * ATtiny Pin 5 = SDA on GPIO                      ATtiny Pin 6 = (D1) N/U
 * ATtiny Pin 7 = SCK on GPIO                      ATtiny Pin 8 = VCC (2.7-5.5V)
 * NOTE! - It's very important to use pullups on the SDA & SCL lines!
 * Special thanks to Mario H. - author of LiquidCrystal_I2C.
 
 * copyleft 2011 snootlab
 * free software, have fun !
 *
based on official arduino LiquidCrystal Library
- Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
//#include "Wire.h"
#include "TinyWireM.h"                  // uses TinyWireM lib low level functions
#include <Deuligne.h>
#define LED1_PIN         4              // ATtiny Pin 3


// initialize the library with the numbers of the interface pins
Deuligne lcd;

void setup() {
//  Wire.begin();
  pinMode(LED1_PIN,OUTPUT);             // for general DEBUG use
  Blink(LED1_PIN,3);                    // show it's alive
  // set up the LCD's number of columns and rows:
  lcd.init();
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

void Blink(byte led, byte times){ // poor man's GUI
  for (byte i=0; i< times; i++){
    digitalWrite(led,HIGH);
    delay (400);
    digitalWrite(led,LOW);
    delay (175);
  }
}


Depuis l'environnement Arduino, choisir le type de µC utilisé (version choisie dans boards : "Attiny85 internal 8MHz clock"), uploader tout ça sur l'Attiny, (penser a burner le bootloader la première fois) et... voilà !!

IMG_0391.jpg
IMG_0391.jpg (164.17 Kio) Vu 23747 fois





Autre exemple, on va utiliser le joystick !! On modifie le fichier DemoJoy, c'est à dire on retire l'inclusion de la librairie Wire.h pour la remplacer par la librairie I2C master adaptée a l'Attiny "TinyWireM.h" (fichier modifié ci-dessous)

Code: Tout sélectionner
/*
 * Snootlab Deuligne joystick testing demo
 * Initial code from nuelectronics
 *
 * copyleft 2011 snootlab
 * free software, have fun !
 *
 */

//#include <Wire.h> // I2C library include
#include "TinyWireM.h"                  // uses TinyWireM lib low level functions

#include <Deuligne.h> // LCD library include

Deuligne lcd; // lcd object declaration

//Key message
char msgs[5][15] = {
  "Right Key OK ",
  "Up Key OK    ",
  "Down Key OK  ",
  "Left Key OK  ",
  "Select Key OK" };
int key=-1;
int oldkey=-1;


void setup()
{
//  Wire.begin(); // join i2c
  lcd.init(); // LCD init

  lcd.clear(); // Clear Display

  lcd.backLight(true); // Backlight ON

  lcd.setCursor(5,0); // Place cursor row 6, 1st line (counting from 0)
  lcd.print("Setup");
  lcd.setCursor(7,1); // Place cursor row 8, 2nd line (counting from 0)
  lcd.print("ok");
  delay(2000);
  lcd.clear();
  lcd.print("Move Joystick");
}

void loop() {


  key = lcd.get_key();              // read the value from the sensor & convert into key press

  if (key != oldkey)                // if keypress is detected
  {
    delay(50);      // wait for debounce time
    key = lcd.get_key();      // read the value from the sensor & convert into key press
    if (key != oldkey)            
    {         
      oldkey = key;
      if (key >=0){
        // set the cursor to column 0, line 1
        // (note: line 1 is the second row, since counting begins with 0):
        lcd.setCursor(0, 1);
        // print the key pressed:
        lcd.print(msgs[key]);
      }
    }
  }

  //delay(1000);
}


On uploade tout ça sur l'Attiny (penser a burner le bootloader la première fois) et... voilà !!

IMG_0393.jpg
IMG_0393.jpg (201.51 Kio) Vu 23747 fois


En pièce jointe, la librairie deuligne Custom...

Alors synthèse rapide du matos mis en oeuvre
Fichiers joints
Deuligne.zip
(15.18 Kio) Téléchargé 944 fois
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Attiny85 & Le Deuligne !!!

Message non lude Cassiope34 » Ven 6 Juil 2012 13:29

Excellent ça Lionel, merci beaucoup ;)

Dommage que le lien que tu donnes vers l'ATtiny85 ne mène pas vers la boutique Snootlab :mrgreen: :mrgreen:

@+
Cassiope34
 
Messages: 102
Inscription: Lun 16 Avr 2012 14:35

Re: Attiny85 & Le Deuligne !!!

Message non lude fred » Sam 7 Juil 2012 09:22

En boutique maintenant (KIT-08585)
Avatar de l’utilisateur
fred
 
Messages: 220
Inscription: Lun 20 Déc 2010 15:32
Localisation: Toulouse

Re: Attiny85 & Le Deuligne !!!

Message non lude Cassiope34 » Sam 7 Juil 2012 10:09

Merci Fred : nécessaire fait :D
Cassiope34
 
Messages: 102
Inscription: Lun 16 Avr 2012 14:35

Re: Attiny85 & Le Deuligne !!!

Message non lude SesechXP » Sam 7 Juil 2012 11:01

Quand faire faire le plus de choses possibles à un microcontrôleur le plus petit possible devient un jeu :mrgreen:
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Attiny85 & Le Deuligne !!!

Message non lude Cassiope34 » Sam 7 Juil 2012 14:57

ça peut être aussi bien sympa pour faire des petits capteurs autonomes, peu gourmands, qui renvoient leur données via un petit module émetteur 434Mhz... par exemple :D
Cassiope34
 
Messages: 102
Inscription: Lun 16 Avr 2012 14:35

Re: Attiny85 & Le Deuligne !!!

Message non lude Lionel » Sam 7 Juil 2012 15:14

Et oui, depuis que "SoftwareSerial" fait partie des commandes supportées...

The following Arduino commands should be supported:
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()
SoftwareSerial (has been updated in Arduino 1.0)


A vos marques...
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Attiny85 & Le Deuligne !!!

Message non lude Cassiope34 » Dim 8 Juil 2012 08:56

si ça peut aider, voici quelques liens très intéressants pour l'ATtiny & Arduino:

ATTiny et IDE Arduino

ATTiny capteur universel en I2C

Exemple d'utilisation en capteur autonome (malheureusement je n'ai pas trouvé le code !! )


@+
Cassiope34
 
Messages: 102
Inscription: Lun 16 Avr 2012 14:35

Re: Attiny85 & Le Deuligne !!!

Message non lude Pierrick » Lun 26 Nov 2012 13:42

Bonjour,

Quelqu'un a t'il essayé de faire fonctionner le Deuligne avec un Attiny84 ?
J'ai essayé la même procédure qu'avec le 85 mais malheureusement, cela ne fonctionne pas ?

:cry: j'ai le message suivant :

In file included from sketch_nov26a.ino:45:
R:\arduino-1.0.2\libraries\Deuligne/Deuligne.h:82: error: conflicting return type specified for 'virtual size_t Deuligne::write(uint8_t)'
R:\arduino-1.0.2\hardware\tiny\cores\tiny/Print.h:71: error: overriding 'virtual void Print::write(uint8_t)'

L'environnement nécessaire à la prog de l'Attiny84 semble ok ( j'ai réussi à faire fonctionner le script d'exemple Blink sur l'Attiny).

J'ai téléchangé la bonne version de la lib deuligne (pour arduino v1.0.x):
- https://github.com/Snootlab/Deuligne/tree/Arduino-1.0
- J'ai bien sélectionné le type de carte Attiny84 @ 8Mhz
(même erreur si je choisi l'Attiny85)

une idée ?...
je ne sais plus quoi faire ?

Merci
Pierrick
 
Messages: 3
Inscription: Lun 26 Nov 2012 13:29

Re: Attiny85 & Le Deuligne !!!

Message non lude Lionel » Lun 26 Nov 2012 14:09

Bonjour,

dans le cas de l'utilisation avec un attiny, j'ai modifié la librairie deuligne,
il ne faut donc pas récupérer celle sur github, mais celle en piece jointe du premier message de ce post,
avez vous effectué cette opération ?
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Attiny85 & Le Deuligne !!!

Message non lude Pierrick » Lun 26 Nov 2012 14:18

Oui, j'ai utilisé votre lib deuligne modifiée.
Pierrick
 
Messages: 3
Inscription: Lun 26 Nov 2012 13:29

Re: Attiny85 & Le Deuligne !!!

Message non lude Pierrick » Lun 26 Nov 2012 17:29

J'avance ?
J'ai chargé la librairie TinyWireM modifié pour l'Attiny84 et depuis, j'ai une autre erreur :

R:\arduino-1.0.2\libraries\Deuligne\Deuligne.cpp: In function 'void SetMCPReg(byte, byte, byte)':
R:\arduino-1.0.2\libraries\Deuligne\Deuligne.cpp:50: error: 'Wire' was not declared in this scope
R:\arduino-1.0.2\libraries\Deuligne\Deuligne.cpp: In member function 'void Deuligne::init()':
R:\arduino-1.0.2\libraries\Deuligne\Deuligne.cpp:74: error: 'TWBR' was not declared in this scope

Une idée ?
Pierrick
 
Messages: 3
Inscription: Lun 26 Nov 2012 13:29


Retourner vers Vos projets, vos idées

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités