Arduino I2C (3 / 3 étapes)

Étape 3: Programmer / Code

Nous allons écrire deux séries de code
Les codes maître et l’esclave.
Le maître écrit essentiellement des commandes et l’esclave leur lit et obéit. Le maître et l’esclave reconnaissent mutuellement par l’utilisation de la fonction code par exemple que les modbus fonction code 05 figurant le maître raconter l’esclave pour forcer une sortie unique. Donc le réglage du code fonction pour le maître doit être le même pour l’esclave.

Nous aurons besoin d’utiliser la bibliothèque de Wire.h ici. Si ce n’est pas dans votre bibliothèque vous pouvez le télécharger depuis le site Arduino.cc.

N’oubliez pas le bouton poussoir est relié au maître et la LED est reliée à l’esclave, c’est pourquoi lorsque vous appuyez sur le bouton, que le maître donne l’esclave une commande pour allumer la LED, ou lorsque vous appuyez à nouveau sur elle offre une autre commande pour désactiver la LED.

 <pre>#include //include the wire library MASTER CODE<br> 
 int state;//state of the pushbutton int PB=3;//declare pushbutton pin on master arduino 
 int current;//current state of pushbutton 
 void setup() { Serial.begin(9600);//set the serial baudrate Wire.begin();//begin the wire library 
 } 
void loop() {État = (digitalRead(PB)); / / État lit la valeur à la broche 3 si (État == HIGH & & actuel == faible) //if l’État est élevé et touche actuelle est faible {Wire.beginTransmission (5); //begin transmission (sortie unique force) Wire.write (HIGH); //master écrit une valeur haute Wire.endTransmission(); / / fin d’état de la transmission = bas ; //set État à faible courant = élevé ; //current à haute void loop() { state= (digitalRead(PB));// state reads the value at pin3 if(state==HIGH && current==LOW)//if the state is high and current button is low { Wire.beginTransmission(5);//begin transmission(force single output) Wire.write(HIGH);//master writes a high value Wire.endTransmission();// end transmission state=LOW;//set state to low current=HIGH;//current to high } else if(state==HIGH && current == HIGH)//if state is already high and current is high too { Wire.beginTransmission(5);//begin transmission Wire.write(LOW);//master writes low value Wire.endTransmission();// ends transmission state=HIGH;//set state to high current=LOW;//set current to low } ElseIf (État == HIGH & & actuel == HIGH) //if État est déjà élevé et actuel est élevé trop {//begin transmission Wire.write (basse), Wire.beginTransmission (5); //master écrit faible valeur Wire.endTransmission(); / / extrémités État transmission = élevé ; //set État à courant élevé = faible ; //set actuels à faible } 
 <pre>#include //include wire library //SLAVE CODE<br> 
 int LED=3;//declare led pin as pin3 on slave arduino 
 void setup() { Serial.begin(9600);//begin serial monitor and set baudrate Wire.begin(5);//start wire library, with address 5 (force single output) Wire.onReceive(Event);//set to recieve variable pinMode(3,OUTPUT);//set pin3 as output pin digitalWrite(3,LOW);//set output pint to low // put your setup code here, to run once: 
 } 
 void loop() { // put your main code here, to run repeatedly: 
 } void Event(int number)//start an event { while(Wire.available())//if wire is avaliable { int state=Wire.read();//state read the recived command from master, high or low if(state==HIGH)//if state reads high from master { digitalWrite(LED,HIGH);//slave will obey master and set ouput to high } else if(state==LOW)//but if slave reads low from master { digitalWrite(LED,LOW);//slave will obay and set output to low. } } } I am making a four wheel robot using two H-bridges which takes 12 digital ports and an uno only has 13, so i decided on using 2 arduinos, the sensors will be connected to the master and h-bridge to the slave.when the robot is comlete i will upload it here as well. I want it to work like a bobCAT :P, so i need to have individual control over all 4 wheels. please, leave all questions as comments and i will reply. Thank you. 
annuler l’événement (int nombre) //start un événement {while(Wire.available()) //if fil est disponible {int state=Wire.read (); //state lire la commande recived du maître, haute ou basse if(state==HIGH) //if État lit haut du maître {digitalWrite (LED, HIGH); //slave volonté obéir ouput maître et mis à vifd’autre if(state==LOW) //but si l’esclave lit bas du maître {digitalWrite (LED, faible); //slave sera sortie okan et réglée au plus bas.}

Articles Liés

Scannez le Bus Arduino I2C pour les périphériques connectés I2C avec Visuino

Scannez le Bus Arduino I2C pour les périphériques connectés I2C avec Visuino

I2C Dispositifs et Modules sont largement disponibles et très populaire dans les projets de l'Arduino . Chaque périphérique I2C possède une adresse habituellement fixe ou configurable par cavaliers. Lorsque vous travaillez avec le périphérique I2C ,
Horloge avec thermomètre en utilisant Arduino, i2c 16 x 2 lcd, capteur RTC DS1307 et DHT11.

Horloge avec thermomètre en utilisant Arduino, i2c 16 x 2 lcd, capteur RTC DS1307 et DHT11.

Hello! Il a été un moment j'ai n'a pas posté quelque chose sur Instructables, mais maintenant que j'ai fait un projet simple que j'ai vu sur internet sous diverses formes. J'ai réussi à générer un code à l'aide d'autres codes que j'ai trouvé sur inte
Bibliothèque de pilote LCD Arduino I2C et PackMan

Bibliothèque de pilote LCD Arduino I2C et PackMan

Ce projet est un port d'Arduino complète d'une Instructable antérieure qui peut être trouvé ici ;Qui s'intitulait instantané...« Microchip PIC Library pour contrôler une 20 de 4 LCD sur I2C »C' est mon premier rendez-vous à l'écriture d'une bibliothè
Arduino I2C maître et Breakout

Arduino I2C maître et Breakout

Après le succès de ma planche Arduino Uno I2C maître, j'ai commencé à penser que je pourrais améliorer le Conseil. Eh bien... rendent plus extensible d'une part et me permettre d'utiliser le Conseil pour d'autres trucs aussi bien. J'ai pensé que si j
Linkit celui d’Arduino I2C de Communiction

Linkit celui d’Arduino I2C de Communiction

Dans la dernière instructable je vous ai montré comment créer un moniteur de tension à l'aide de la linkit un et après avoir fait une couple de projet à l'aide de Linkit un Conseil que j'ai réalisé qu'il serait grand si nous pouvions faire la linkit
Arduino - I2C LCD 1602A - mot de passe protégé porte d’accès avec relais - KY-019

Arduino - I2C LCD 1602A - mot de passe protégé porte d’accès avec relais - KY-019

Salut tout le monde! Aujourd'hui, j'ai fait un simple code pour commander un gâche électrique de verrouillage avec un mot de passe / Code d'accès à l'aide d'un relais 1 canal. Je n'ai pas une telle serrure, mais j'ai démontré avec une lampe reliée au
Double-Arduino I2C affichage de la température

Double-Arduino I2C affichage de la température

À l'aide des Arduinos est grand et tout, mais ce qui se passe quand vous manquez d'épingles ? Bien sûr, vous pourriez acheter un méga, mais que si vous avez déjà quelques Unos, ou peut-être certains Micros ? Il est un protocole astucieux dans l'élect
Arduino I2C afficher le débogage de code PIN

Arduino I2C afficher le débogage de code PIN

Bienvenue sur ma tentative sur un premier Instructable. Je fais cela parce que j'ai acheté un LCD à bas prix de I2C merdique pour Arduino hors d'eBay et a passé plusieurs heures à essayer de le brancher. Comme prévu les instructions horribles n'a rie
ATTiny84 - I2C esclave - Arduino UNO

ATTiny84 - I2C esclave - Arduino UNO

J'ai travaillé sur la construction des morceaux que j'ai besoin de me faire une CNC PCB Mill pendant un petit moment maintenant et la prochaine partie du puzzle tente d'obtenir l'Arduino pour contrôler simultanément les 3 moteurs pas. Car ne supporte
Comment mesurer la température très précisément avec un Arduino et un Conseil de capteur de température TSYS01.

Comment mesurer la température très précisément avec un Arduino et un Conseil de capteur de température TSYS01.

Alors qu'il étudiait à l'Université, nous avons été contestés dans le cadre d'un travail en cours dans la conception d'une boîte avec un contrôle très précis de la température. Si le projet devait réussir, plusieurs boîtes devaient être construits et
À l’aide de sacs à dos PCF8574 avec afficheurs LCD et Arduino

À l’aide de sacs à dos PCF8574 avec afficheurs LCD et Arduino

IntroductionÀ l'aide de modules LCD avec votre Arduino est populaire, cependant la quantité de câblage nécessite du temps et patience au fil il correctement - et aussi utilise un grand nombre de broches de sortie numérique. C'est pourquoi nous aimons
MPU-9150/9250 IMU avec Arduino Pro-Micro

MPU-9150/9250 IMU avec Arduino Pro-Micro

Avez-vous acheter un capteur 10-DOF d'aliexpress ou ebay et rencontrez des problèmes pour faire fonctionner ? J'ai téléchargé la bibliothèque de Jeff Rowberg et la sortie toujours figée après un certain temps. J'ai décidé de déboguer le code, parce q
Guide étape par étape pour la commande de robot Micro magicien (compatible Arduino)

Guide étape par étape pour la commande de robot Micro magicien (compatible Arduino)

le Magicien Micro de DAGU est un contrôleur compatible Arduino low cost, conçu spécialement pour les débutants qui veulent construire un petit robot. Le jury a un certain nombre d'accessoires utiles, construite en sorte que dans la plupart des cas le
Carte relais I2C

Carte relais I2C

Les relais sont une des interfaces plus courantes entre un microcontrôleur et le monde extérieur. Il fournit une isolation électrique entre les circuits basse tension du micro contrôleur et les charges.Alors pourquoi cette drôle carte de relais I2C,