Cours:TPS 2103 tp positionnementMoteur : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
Ligne 23 : Ligne 23 :
 
   // Start the I2C Bus as Slave on address i2cAddress
 
   // Start the I2C Bus as Slave on address i2cAddress
 
   Wire.begin(i2cAddress);
 
   Wire.begin(i2cAddress);
   // fonction a exécuter lorsqu'on doit envoyer des données au master
+
   // fonction à exécuter lorsqu'on doit envoyer des données au master
 
   Wire.onRequest(requestEvent);
 
   Wire.onRequest(requestEvent);
 
}
 
}

Version du 13 avril 2023 à 21:40

Arduino-nano-pinout.png

Fiche résumé

Retour à la liste des Tds/Tps

Éléments de correction

simuler avec simulIDE

Pensez à mettre sur la 1ère ligne de votre code :
// Compiler: Avrgcc device: nomDuMicrocontroleur


Asservissement en position du moteur CC

Esclave (target) i2c

sans registres

On donne les exemples suivant pour qu'un µcontroleur atmegaxxx se comporte comme un esclave i2c (pas de notion de registres)

// Include the required Wire library for I2C
#include <Wire.h>

const int8_t i2cAddress = 0x1A;
// !!! variable utilisée dans une interruption => volatile
volatile uint16_t valPotar;

void setup() {
  // Start the I2C Bus as Slave on address i2cAddress
  Wire.begin(i2cAddress);
  // fonction à exécuter lorsqu'on doit envoyer des données au master
  Wire.onRequest(requestEvent);
}

void requestEvent()
{
  Wire.write(valPotar>>2);
}

void loop() {
  valPotar=analogRead(A0);
}
// Include the required Wire library for I2C
#include <Wire.h>

const int8_t i2cAddress = 9;

void setup() {
  DDRD=0xFF;
  // Start the I2C Bus as Slave on address i2cAddress
  Wire.begin(i2cAddress);
  // fonction à exécuter lorsque le master nous envoie des données
  Wire.onReceive(receiveEvent);
}

void receiveEvent(int nbBytes)
{
    PORTD=Wire.read();
}


void loop()
{
}

avec registres

Interface écran/bouton