mercredi 7 décembre 2011

I2c et arduino

Lancement du projet utiliser le protocole i2c. 1er etape on va essayer avec 2 arduino

site;
http://wiki.t-o-f.info/index.php?n=Arduino.I2C
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235582397
http://arduino.cc/en/Tutorial/MasterWriter
http://www.gammon.com.au/forum/?id=10896


Les questions:
1-/Comment brancher les 2 aduinos en i2c?
2-/Comment transformer un des arduinos en maitre et esclave?
Comment lire les données sur l'un des arduino et vérifier qu'il récupère bien les bonnes données?


Réponses:
1-/Sur la plupart des cartes Arduino:
SDA : broche analogique 4
SCL : broche analogique 5

Un bus I2C (pour Inter Integrated Circuit) est un bus série et synchrone composé de trois fils :
un signal de donnée (SDA) ;
un signal d'horloge (SCL) ;
un signal de référence (masse).

Le périphérique qui gère la communication est le maître, c'est lui qui génère l'horloge (SCL) et qui envoie les données (SDA) mis à part l'acknowledge (acquittement en français).
source : http://fr.wikipedia.org/wiki/I2C

2-/Le brochage est toujours le même pour l'esclave et le maitre. Pas encore bien compris pourquoi.


Exemple maitre/esclave
Code:
#include

void setup()
{
// initialise la liaison I2C en tant que maitre (pas de paramètre à begin)
Wire.begin();
}

void loop()
{
// commence à parler à la carte slave qui a déclaré l'adresse 0x01
Wire.beginTransmission(0x01);
Wire.send("Salut"); // envoie une chaine de caractères (pourrait être un tableau de byte ou...)
Wire.endTransmission(); // arrête
delay(500);
}




Sur l'esclave :

Code:
#include

void setup()
{
// initialise l'I2C en tant que slave (puisque il précise l'adresse 0x01
Wire.begin(0x01);
// déclare une fonction (ci-dessous) pour recevoir ce que le maitre envoit
Wire.onReceive(recevoir);
// pour pouvoir dire ce qui se passe
Serial.begin(9600);
}

void loop()
{
// rien de particulier, le code normal de la carte
delay(100);
}

// déclenché par un envoi du maitre
void recevoir(int qty)
{
Serial.print("> J'ai reçu ");
Serial.print(qty);
Serial.println(" octets.");
// on lit octet par octet
Serial.print("Le maitre dit : ");
while(Wire.available() > 0)
{
char c = Wire.receive();
Serial.print(c);
}
// dernier retour à la ligne
Serial.println();
}





Exemple de transmssion pour un capteur an i2C. Ca peut toujours servir
/*

SRF02 sensor reader

language: Wiring/Arduino Reads data from a Devantech SRF02 ultrasonic sensor.

Should also work for the SRF08 and SRF10 sensors as well.

Sensor connections:

SDA - Analog pin 4

SCL - Analog pin 5

created 5 Mar. 2007

by Tom Igoe

*/

// include Wire library to read and write I2C commands:

#include

// the commands needed for the SRF sensors:

#define sensorAddress 0x70

#define readInches 0x50

// use these as alternatives if you want centimeters or microseconds:

#define readCentimeters 0x51

#define readMicroseconds 0x52

// this is the memory register in the sensor that contains the result:

#define resultRegister 0x02

void setup()

{

// start the I2C bus

Wire.begin();

// open the serial port:

Serial.begin(9600);

}

void loop()

{

// send the command to read the result in inches:

sendCommand(sensorAddress, readInches);

// wait at least 70 milliseconds for a result:

delay(70);

// set the register that you want to reas the result from:

setRegister(sensorAddress, resultRegister);

// read the result:

int sensorReading = readData(sensorAddress, 2);

// print it:

Serial.print("distance: ");

Serial.print(sensorReading);

Serial.println(" inches");

// wait before next reading:

delay(70);

}

/*

SendCommand() sends commands in the format that the SRF sensors expect

*/

void sendCommand (int address, int command) {

// start I2C transmission:

Wire.beginTransmission(address);

// send command:

Wire.send(0x00);

Wire.send(command);

// end I2C transmission:

Wire.endTransmission();

}

/*

setRegister() tells the SRF sensor to change the address pointer position

*/

void setRegister(int address, int thisRegister) {

// start I2C transmission:

Wire.beginTransmission(address);

// send address to read from:

Wire.send(thisRegister);

// end I2C transmission:

Wire.endTransmission();

}

/*

readData() returns a result from the SRF sensor

*/

int readData(int address, int numBytes) {

int result = 0; // the result is two bytes long

// send I2C request for data:

Wire.requestFrom(address, numBytes);

// wait for two bytes to return:

while (Wire.available() < 2 ) {

// wait for result

}

// read the two bytes, and combine them into one int:

result = Wire.receive() * 256;

result = result + Wire.receive();

// return the result:

return result;

}

resultat

prototyper un site web

Il existe plusieurs logiciels permettant de prototyper un site web.
Les gratuits :
pencil project http://pencil.evolus.vn/en-US/Home.aspx
mockflow http://mockflow.com/desktop/
gotrigg gotiggr.com/

Les payants
balsamiq http://balsamiq.com/

Validation

prototyper un site web

Il existe plusieurs logiciels permettant de prototyper un site web.
Les gratuits :
pencil project http://pencil.evolus.vn/en-US/Home.aspx
mockflow http://mockflow.com/desktop/
gotrigg gotiggr.com/

Les payants
balsamiq http://balsamiq.com/

Validation

dimanche 20 novembre 2011

samedi 19 novembre 2011

bien reussir la découpe avec slicemodeler



Prendre la distance de l'objet.

















et les bons param.


Slicing





















Bon,

J'avais vu un logiciel qui avait l'air plutôt intéressant mais. mais. il est tout kramoisi. Je veux parler de autodesk 123dmake. http://www.123dapp.com/make
Ca avait l'air plutot sympa. On prend un modèle et il decoupe tout, tout seul. Mais que-ca-ne-fonctionne-pas.
Il marche pas pour l'import de modèle 3d au format stl et obj. Tout du moins avec les modèles que j'ai pu essayé ce qui est fort dommage? Sur un forum il est précisé que le modèle doit être "water-tight mesh"???

Du coup j'ai cherché comment faire de la découpe à partir d'un objet 3d et je suis tombé sur ca;
C'est tout en ligne de commande mais ca à pas l'air si compliqué. Je testerais plus tard.
et ca;
Un plugin ruby pour sketchup.
un petit tour sur un dépot de plugin ruby et le tour est joué.

J'essaye. et le petit robot est tout découpé.

Ceci dit pour obtenir le layout il faur faire attention au dimension du modéle et aux dimension pour le slicing.




..

Bientot la suite 3dtoreallife?



mercredi 16 novembre 2011

Native client sdk premier test



Bon après avoir installé le SDK de google. Voici comment générer quelques petites pages web.
Scons permet de compiler tout ca et générer un pseudo executable.

Provenant de la vidéo de démonstration
http://www.youtube.com/watch?v=WgbK0ztUkDM