Go Down

Topic: Arduino et Python (Read 846 times) previous topic - next topic

chabot380

Bonsoir à tous.

Vous êtes sur UBUNTU 10.04 LTS ou + moi je suis sur la 10.04 LTS.
Vous développez en python, moi je développe avec DrPython.
Vous avez des enceintes sur votre ordi.

Donc pour m'amuser j'ai fait ça ( enfin pas tout côté arduino ) mais côté Python oui !


Programmez  l'arduino avec ça :

// --- Programme Arduino ---
// par X. HINAULT - 01/2010 et modifié par chabot380

// --- Que fait ce programme ? ---
/* Une LED reste allumée 1 seconde quand le bouton poussoir est appuyé et envoie des données par le port USB */

// --- Fonctionnalités utilisées ---

// --- Circuit à réaliser ---
// Connecter BP à la masse sur la broche 2 (configurée en entrée)
// Connecter LED et sa résistance en série sur la broche 13 (configurée en sortie)

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...

// --- Inclusion des librairies utilisées ---


// --- Déclaration des constantes ---

const int APPUI=0; // constante état du BP - appui sur niveau bas
const int PAS_APPUI=1; // constante état du BP - relâché sur niveau haut


// --- constantes des broches ---

const int BP=2; //declaration constante de broche
const int LED=13; //declaration constante de broche

// --- Déclaration des variables globales ---

int ETAT_BP; // variable d'état du bouton poussoir

// --- Initialisation des fonctionnalités utilisées ---

//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage ---

Serial.begin(115200);// initialisation port serie à 115200 bauds

pinMode(LED, OUTPUT); //met la broche en sortie

pinMode(BP, INPUT); //met la broche en entree

digitalWrite(BP, HIGH) ; // activation du pullup de la broche en entrée

} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal ---

ETAT_BP=digitalRead(BP); // lit l'état du BP et met la valeur 0/1 dans la variable

if (ETAT_BP==APPUI){ // si l'état du BP est appuyé (càd si variable état BP = 0)
// Attention à bien utiliser == et non =

  digitalWrite(LED,1); // allume la LED
  Serial.println("la température intérieur est de 19 degré");
  delay (1000); // attend 1 seconde - le BP est inactif pendant ce temps

}

else { // sinon (càd si variable état bp=1)

  digitalWrite(LED,0); // éteint la LED
}

// remarque : on aurait pu écrire ceci sur une seule ligne selon :
// if (ETAT_BP==APPUI)digitalWrite(LED,1); else digitalWrite(LED,0);

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

// --- Fin programme ---


Côté ordinateur mettre dans un répertoire ce programme python (serialarduino.py)

#! /usr/bin/env python

# -*- coding:Latin-1 -*-

# Brancher le module Arduino avant de lancer le programme python.

import serial #import du module serie

import time # import du module time pour application future

import os # import du module os, pour lancer espeak





# Setup du port serie prise usb du module Arduino

ser = serial.Serial()

# nom du port utilisé par Ubuntu.

ser.setPort('/dev/ttyACM0')

# fixer la vitesse du port

ser.baudrate = 115200

# Overture du port

ser.open()





def parle():

    os.system('espeak -v fr -p 70 -f phrase')

#



while (ser.readline != ""):

    line=ser.readline()

    dire = open("phrase","w")

    dire.write(line)

    dire.close()

    print line

    parle()

ser.close()

voilà pour les programme bien sur on peut faire mieux, je ne suis pas un programmeur pro !

Pour commencer brancher l'arduino programmé ( avec le programme ci-dessus )
Ouvrir sur l'ordi un terminal.
Se placer dans le repertoire où ce trouve le programme en python. (cd mon_repertoire)
et tapez : python serialarduino.py

Ne pas oublier ne mettre le son sur votre ordi.
Et enfin appuyez sur le bouton de commande de l'arduino.

Amusez vous bien. Un départ pour un programme domotique parlant ?
Peut être ou pas !  ;)

chabot380
ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

goabonga

super simple maus y'a pas un reset a chaque connexion ?

Go Up