Jan Cumps
Published © CC BY

Drive an I2C DAC with C++ on IoT2020

How to control an I2C DAC with the IOT2020 in C++.

BeginnerProtip1 hour499
Drive an I2C DAC with C++ on IoT2020

Things used in this project

Hardware components

SIMATIC IOT2020
Siemens SIMATIC IOT2020
×1
Texas Instruments DAC8574
×1

Story

Read more

Schematics

Schema

Code

main.cpp

C/C++
The whole code
#include <iostream>
#include "mraa.hpp"

using namespace std;

uint16_t Sin_tab[256] = { 32768, 33572, 34376, 35178, 35980, 36779, 37576,
		38370, 39161, 39947, 40730, 41507, 42280, 43046, 43807, 44561, 45307,
		46047, 46778, 47500, 48214, 48919, 49614, 50298, 50972, 51636, 52287,
		52927, 53555, 54171, 54773, 55362, 55938, 56499, 57047, 57579, 58097,
		58600, 59087, 59558, 60013, 60451, 60873, 61278, 61666, 62036, 62389,
		62724, 63041, 63339, 63620, 63881, 64124, 64348, 64553, 64739, 64905,
		65053, 65180, 65289, 65377, 65446, 65496, 65525, 65535, 65525, 65496,
		65446, 65377, 65289, 65180, 65053, 64905, 64739, 64553, 64348, 64124,
		63881, 63620, 63339, 63041, 62724, 62389, 62036, 61666, 61278, 60873,
		60451, 60013, 59558, 59087, 58600, 58097, 57579, 57047, 56499, 55938,
		55362, 54773, 54171, 53555, 52927, 52287, 51636, 50972, 50298, 49614,
		48919, 48214, 47500, 46778, 46047, 45307, 44561, 43807, 43046, 42280,
		41507, 40730, 39947, 39161, 38370, 37576, 36779, 35980, 35178, 34376,
		33572, 32768, 31964, 31160, 30358, 29556, 28757, 27960, 27166, 26375,
		25589, 24806, 24029, 23256, 22490, 21729, 20975, 20229, 19489, 18758,
		18036, 17322, 16617, 15922, 15238, 14564, 13900, 13249, 12609, 11981,
		11365, 10763, 10174, 9598, 9037, 8489, 7957, 7439, 6936, 6449, 5978,
		5523, 5085, 4663, 4258, 3870, 3500, 3147, 2812, 2495, 2197, 1916, 1655,
		1412, 1188, 983, 797, 631, 483, 356, 247, 159, 90, 40, 11, 1, 11, 40,
		90, 159, 247, 356, 483, 631, 797, 983, 1188, 1412, 1655, 1916, 2197,
		2495, 2812, 3147, 3500, 3870, 4258, 4663, 5085, 5523, 5978, 6449, 6936,
		7439, 7957, 8489, 9037, 9598, 10174, 10763, 11365, 11981, 12609, 13249,
		13900, 14564, 15238, 15922, 16617, 17322, 18036, 18758, 19489, 20229,
		20975, 21729, 22490, 23256, 24029, 24806, 25589, 26375, 27166, 27960,
		28757, 29556, 30358, 31160, 31964 };

int main() {
	uint8_t txBuffer[3];
	mraa::I2c* i2c;
	int i;

	i2c = new mraa::I2c(0);
	i2c->address(0x4C); //set address of DAC
	txBuffer[0] = 0x10; // set value direct

	while (1) {
		for (i = 0; i < 256; i++) {
			txBuffer[1] = Sin_tab[i] >> 8;
			txBuffer[2] = Sin_tab[i];
			i2c->write(txBuffer, 3);

		}
	}
	return 0;
}

Credits

Jan Cumps

Jan Cumps

22 projects • 18 followers

Comments