Equipo7 LabMicros / Mbed 2 deprecated I2C_3B

Dependencies:   mbed LiquidCrystal_I2C_for_KL25Z

Committer:
micros22eq7
Date:
Mon Apr 25 18:47:38 2022 +0000
Revision:
0:3e5902ddcd6e
Child:
1:5f15147dfad8
Conexion entre microcontroladores KL25Z e impresion de informacion en LCD y uso de LED interno, por protocolos de comunicacion I2C. Modulo SALVE / ESCLAVO.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
micros22eq7 0:3e5902ddcd6e 1 //CÓDIGO 3-B
micros22eq7 0:3e5902ddcd6e 2
micros22eq7 0:3e5902ddcd6e 3 #include "mbed.h"
micros22eq7 0:3e5902ddcd6e 4 #include "stdlib.h"
micros22eq7 0:3e5902ddcd6e 5 #include <LiquidCrystal_I2C.h>
micros22eq7 0:3e5902ddcd6e 6 #include <iostream>
micros22eq7 0:3e5902ddcd6e 7 #include <string>
micros22eq7 0:3e5902ddcd6e 8
micros22eq7 0:3e5902ddcd6e 9 Serial pc(USBTX, USBRX); // tx, rx
micros22eq7 0:3e5902ddcd6e 10
micros22eq7 0:3e5902ddcd6e 11 //Los puertos SDA y SD8 están referenciados en el archivo LiquidCrystal_I2C.cpp
micros22eq7 0:3e5902ddcd6e 12 // SDA -> PTC9
micros22eq7 0:3e5902ddcd6e 13 // SCL -> PTC8
micros22eq7 0:3e5902ddcd6e 14 // DIR TIPO
micros22eq7 0:3e5902ddcd6e 15 LiquidCrystal_I2C lcd(0x4E, 16, 2);
micros22eq7 0:3e5902ddcd6e 16
micros22eq7 0:3e5902ddcd6e 17 I2CSlave slave(I2C_SDA, I2C_SCL);
micros22eq7 0:3e5902ddcd6e 18
micros22eq7 0:3e5902ddcd6e 19 char addr = 0xA0;
micros22eq7 0:3e5902ddcd6e 20
micros22eq7 0:3e5902ddcd6e 21
micros22eq7 0:3e5902ddcd6e 22 int main()
micros22eq7 0:3e5902ddcd6e 23 {
micros22eq7 0:3e5902ddcd6e 24 pc.printf("\x1b[2J"); //CLEAR
micros22eq7 0:3e5902ddcd6e 25 pc.printf("\033[1;1H"); //Mueve cursor al origen
micros22eq7 0:3e5902ddcd6e 26
micros22eq7 0:3e5902ddcd6e 27 char buf[50];
micros22eq7 0:3e5902ddcd6e 28
micros22eq7 0:3e5902ddcd6e 29 // Inicia la LCD
micros22eq7 0:3e5902ddcd6e 30 lcd.begin();
micros22eq7 0:3e5902ddcd6e 31
micros22eq7 0:3e5902ddcd6e 32 slave.address(addr);
micros22eq7 0:3e5902ddcd6e 33 slave.frequency (100000);
micros22eq7 0:3e5902ddcd6e 34 pc.printf("SLAVE ID: %d\r\n", addr);
micros22eq7 0:3e5902ddcd6e 35
micros22eq7 0:3e5902ddcd6e 36 lcd.clear();
micros22eq7 0:3e5902ddcd6e 37 lcd.print("I'M SLAVE");
micros22eq7 0:3e5902ddcd6e 38 char msg[] = " *Si* ";
micros22eq7 0:3e5902ddcd6e 39 while (1)
micros22eq7 0:3e5902ddcd6e 40 {
micros22eq7 0:3e5902ddcd6e 41 int i = slave.receive();
micros22eq7 0:3e5902ddcd6e 42
micros22eq7 0:3e5902ddcd6e 43 switch (i) {
micros22eq7 0:3e5902ddcd6e 44 case I2CSlave::ReadAddressed:
micros22eq7 0:3e5902ddcd6e 45 slave.write(msg, strlen(msg) + 1); // Includes null char
micros22eq7 0:3e5902ddcd6e 46 slave.stop();
micros22eq7 0:3e5902ddcd6e 47 slave.receive();
micros22eq7 0:3e5902ddcd6e 48 break;
micros22eq7 0:3e5902ddcd6e 49 case I2CSlave::WriteGeneral:
micros22eq7 0:3e5902ddcd6e 50 slave.read(buf, 30);
micros22eq7 0:3e5902ddcd6e 51 printf("\rRead General: %s\n", buf);
micros22eq7 0:3e5902ddcd6e 52 slave.stop();
micros22eq7 0:3e5902ddcd6e 53 slave.receive();
micros22eq7 0:3e5902ddcd6e 54 break;
micros22eq7 0:3e5902ddcd6e 55 case I2CSlave::WriteAddressed:
micros22eq7 0:3e5902ddcd6e 56 slave.read(buf, 30);
micros22eq7 0:3e5902ddcd6e 57 pc.printf("\rRead Addressed: %s\n", buf);
micros22eq7 0:3e5902ddcd6e 58
micros22eq7 0:3e5902ddcd6e 59 lcd.clear();
micros22eq7 0:3e5902ddcd6e 60 lcd.print(buf);
micros22eq7 0:3e5902ddcd6e 61 slave.stop();
micros22eq7 0:3e5902ddcd6e 62 slave.receive();
micros22eq7 0:3e5902ddcd6e 63 break;
micros22eq7 0:3e5902ddcd6e 64 }
micros22eq7 0:3e5902ddcd6e 65 for (int i = 0; i < 10; i++) {
micros22eq7 0:3e5902ddcd6e 66 buf[i] = 0; // Clear buffer
micros22eq7 0:3e5902ddcd6e 67 }
micros22eq7 0:3e5902ddcd6e 68
micros22eq7 0:3e5902ddcd6e 69 }
micros22eq7 0:3e5902ddcd6e 70 }