Projet C++ / Mbed 2 deprecated MBED_CPP_DII4A

Dependencies:   SeeedGrayOLED mbed

Fork of MBED_CPP_DII4A by Projet C++

Committer:
mr_cub3
Date:
Mon Mar 13 18:25:52 2017 +0000
Revision:
2:fa5b67d8d989
bastien

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mr_cub3 2:fa5b67d8d989 1 /*
mr_cub3 2:fa5b67d8d989 2 * SeeedGrayOLED.cpp
mr_cub3 2:fa5b67d8d989 3 * SSD1327 Gray OLED Driver Library for SSD1327
mr_cub3 2:fa5b67d8d989 4 *
mr_cub3 2:fa5b67d8d989 5 * Copyright (c) 2011 seeed technology inc.
mr_cub3 2:fa5b67d8d989 6 * Author : Visweswara R
mr_cub3 2:fa5b67d8d989 7 * Create Time : Dec 2011
mr_cub3 2:fa5b67d8d989 8 * Change Log :
mr_cub3 2:fa5b67d8d989 9 *
mr_cub3 2:fa5b67d8d989 10 * This library is free software; you can redistribute it and/or
mr_cub3 2:fa5b67d8d989 11 * modify it under the terms of the GNU Lesser General Public
mr_cub3 2:fa5b67d8d989 12 * License as published by the Free Software Foundation; either
mr_cub3 2:fa5b67d8d989 13 * version 2.1 of the License, or (at your option) any later version.
mr_cub3 2:fa5b67d8d989 14 *
mr_cub3 2:fa5b67d8d989 15 * This library is distributed in the hope that it will be useful,
mr_cub3 2:fa5b67d8d989 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
mr_cub3 2:fa5b67d8d989 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
mr_cub3 2:fa5b67d8d989 18 * Lesser General Public License for more details.
mr_cub3 2:fa5b67d8d989 19 *
mr_cub3 2:fa5b67d8d989 20 * You should have received a copy of the GNU Lesser General Public
mr_cub3 2:fa5b67d8d989 21 * License along with this library; if not, write to the Free Software
mr_cub3 2:fa5b67d8d989 22 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
mr_cub3 2:fa5b67d8d989 23 */
mr_cub3 2:fa5b67d8d989 24
mr_cub3 2:fa5b67d8d989 25 #include "mbed.h"
mr_cub3 2:fa5b67d8d989 26 #include "TouchClamp.h"
mr_cub3 2:fa5b67d8d989 27 #include "I2C.h"
mr_cub3 2:fa5b67d8d989 28 #include <stdio.h>
mr_cub3 2:fa5b67d8d989 29 #include <string.h>
mr_cub3 2:fa5b67d8d989 30
mr_cub3 2:fa5b67d8d989 31 // 8x8 Font ASCII 32 - 127 Implemented
mr_cub3 2:fa5b67d8d989 32 // Users can modify this to support more characters(glyphs)
mr_cub3 2:fa5b67d8d989 33 // BasicFont is placed in code memory.
mr_cub3 2:fa5b67d8d989 34
mr_cub3 2:fa5b67d8d989 35 // This font can be freely used without any restriction(It is placed in public domain)
mr_cub3 2:fa5b67d8d989 36 // const unsigned char BasicFont[][8] PROGMEM=
mr_cub3 2:fa5b67d8d989 37
mr_cub3 2:fa5b67d8d989 38 TouchClamp::TouchClamp(PinName sda, PinName scl,int addr):
mr_cub3 2:fa5b67d8d989 39 _device(sda, scl)
mr_cub3 2:fa5b67d8d989 40 {
mr_cub3 2:fa5b67d8d989 41 _addr = addr;
mr_cub3 2:fa5b67d8d989 42 }
mr_cub3 2:fa5b67d8d989 43
mr_cub3 2:fa5b67d8d989 44 void TouchClamp::init(void)
mr_cub3 2:fa5b67d8d989 45 {
mr_cub3 2:fa5b67d8d989 46 unsigned char mpr[3]={_addr,0x5E,0x00};
mr_cub3 2:fa5b67d8d989 47 int ack = 0;
mr_cub3 2:fa5b67d8d989 48 int i = 0;
mr_cub3 2:fa5b67d8d989 49 // Put the MPR into setup mode
mr_cub3 2:fa5b67d8d989 50 ack = write(mpr,3);
mr_cub3 2:fa5b67d8d989 51
mr_cub3 2:fa5b67d8d989 52 // Electrode filters for when data is > baseline
mr_cub3 2:fa5b67d8d989 53 unsigned char elec_flt[6]={_addr,0x2B,0x01,0x01,0x00,0x00};
mr_cub3 2:fa5b67d8d989 54 ack = write(elec_flt,6);
mr_cub3 2:fa5b67d8d989 55
mr_cub3 2:fa5b67d8d989 56 // Electrode filters for when data is < baseline
mr_cub3 2:fa5b67d8d989 57 unsigned char elec_flt2[6]={_addr,0x2F,0x01,0x01,0x00,0x00};
mr_cub3 2:fa5b67d8d989 58 ack = write(elec_flt2,6);
mr_cub3 2:fa5b67d8d989 59
mr_cub3 2:fa5b67d8d989 60 // Electrode touch and release thresholds
mr_cub3 2:fa5b67d8d989 61 for(i=0; i<12; i++){
mr_cub3 2:fa5b67d8d989 62 _device.start();
mr_cub3 2:fa5b67d8d989 63 ack = _device.write(_addr);
mr_cub3 2:fa5b67d8d989 64 ack = _device.write(0x41+(i*2));
mr_cub3 2:fa5b67d8d989 65 ack = _device.write(0x0F);
mr_cub3 2:fa5b67d8d989 66 ack = _device.write(0x0A);
mr_cub3 2:fa5b67d8d989 67 _device.stop();
mr_cub3 2:fa5b67d8d989 68 }
mr_cub3 2:fa5b67d8d989 69
mr_cub3 2:fa5b67d8d989 70 // Proximity Settings
mr_cub3 2:fa5b67d8d989 71 unsigned char proximy[13]={_addr,0x36,0xff,0xff,0x00,0x00,0x01,0x01,0xff,0xff,0x00,0x00,0x00};
mr_cub3 2:fa5b67d8d989 72 ack = write(proximy,13);
mr_cub3 2:fa5b67d8d989 73
mr_cub3 2:fa5b67d8d989 74 unsigned char proximy2[4]={_addr,0x59,0x5D,0x02};
mr_cub3 2:fa5b67d8d989 75 ack = write(proximy2,4);
mr_cub3 2:fa5b67d8d989 76
mr_cub3 2:fa5b67d8d989 77 unsigned char proximy3[3]={_addr,0x5D,0x04};
mr_cub3 2:fa5b67d8d989 78 ack = write(proximy3,3);
mr_cub3 2:fa5b67d8d989 79
mr_cub3 2:fa5b67d8d989 80 unsigned char proximy4[3]={_addr,0x5E,0x0C};
mr_cub3 2:fa5b67d8d989 81 ack = write(proximy4,3);
mr_cub3 2:fa5b67d8d989 82 }
mr_cub3 2:fa5b67d8d989 83
mr_cub3 2:fa5b67d8d989 84 int TouchClamp::write(unsigned char * data, int size)
mr_cub3 2:fa5b67d8d989 85 {
mr_cub3 2:fa5b67d8d989 86 int i = 0;
mr_cub3 2:fa5b67d8d989 87 int ack = 0;
mr_cub3 2:fa5b67d8d989 88 /////////////////////
mr_cub3 2:fa5b67d8d989 89 ///WRITE PROTOCOLE///
mr_cub3 2:fa5b67d8d989 90 /////////////////////
mr_cub3 2:fa5b67d8d989 91 _device.start();
mr_cub3 2:fa5b67d8d989 92 ack = _device.write(_addr);
mr_cub3 2:fa5b67d8d989 93 for(i=0;i<size;i++)
mr_cub3 2:fa5b67d8d989 94 {
mr_cub3 2:fa5b67d8d989 95 ack = _device.write(data[i]);
mr_cub3 2:fa5b67d8d989 96 if(ack == 0)
mr_cub3 2:fa5b67d8d989 97 return 0;
mr_cub3 2:fa5b67d8d989 98 }
mr_cub3 2:fa5b67d8d989 99 _device.stop();
mr_cub3 2:fa5b67d8d989 100 return 1;
mr_cub3 2:fa5b67d8d989 101 }
mr_cub3 2:fa5b67d8d989 102
mr_cub3 2:fa5b67d8d989 103 unsigned char TouchClamp::readTouch(unsigned char command)
mr_cub3 2:fa5b67d8d989 104 {
mr_cub3 2:fa5b67d8d989 105 unsigned char result = 0;
mr_cub3 2:fa5b67d8d989 106 int ack = 0; ////////////////////
mr_cub3 2:fa5b67d8d989 107 ///READ PROTOCOLE///
mr_cub3 2:fa5b67d8d989 108 ////////////////////
mr_cub3 2:fa5b67d8d989 109 //Start the command
mr_cub3 2:fa5b67d8d989 110 _device.start();
mr_cub3 2:fa5b67d8d989 111 // Address the target (Write mode)
mr_cub3 2:fa5b67d8d989 112 ack = _device.write(_addr);
mr_cub3 2:fa5b67d8d989 113 if(ack == 0)
mr_cub3 2:fa5b67d8d989 114 return 0;
mr_cub3 2:fa5b67d8d989 115 // Re-send the target address in read mode
mr_cub3 2:fa5b67d8d989 116 ack = _device.write(command);
mr_cub3 2:fa5b67d8d989 117 if(ack == 0)
mr_cub3 2:fa5b67d8d989 118 return 0;
mr_cub3 2:fa5b67d8d989 119 // Re-start for read of data
mr_cub3 2:fa5b67d8d989 120 _device.start();
mr_cub3 2:fa5b67d8d989 121 // Re-send the target address in read mode
mr_cub3 2:fa5b67d8d989 122 ack = _device.write(_addr+1);
mr_cub3 2:fa5b67d8d989 123 if(ack == 0)
mr_cub3 2:fa5b67d8d989 124 return 0;
mr_cub3 2:fa5b67d8d989 125 // Read in the result
mr_cub3 2:fa5b67d8d989 126 result = _device.read(0);
mr_cub3 2:fa5b67d8d989 127 // Reset the bus
mr_cub3 2:fa5b67d8d989 128 _device.stop();
mr_cub3 2:fa5b67d8d989 129
mr_cub3 2:fa5b67d8d989 130 return result;
mr_cub3 2:fa5b67d8d989 131 }
mr_cub3 2:fa5b67d8d989 132