#ifndef MUX_H #define MUX_H #include <Arduino.h> class MUX { private: unsigned A0, A1, A2; unsigned Z; unsigned Y; void initPins(); static unsigned toBin(const unsigned); static unsigned id_counter; unsigned _id; public: MUX(unsigned, unsigned, unsigned, unsigned); unsigned readZ(); unsigned getY(); void shiftPorts(); unsigned id(); }; unsigned MUX::id_counter = 0; MUX::MUX(unsigned A0, unsigned A1, unsigned A2, unsigned Z) { this->A0 = A0; this->A1 = A1; this->A2 = A2; this->Z = Z; Y = 0; _id = ++id_counter; initPins(); } unsigned MUX::id() { return _id; } void MUX::initPins() { pinMode(this->A0, OUTPUT); pinMode(this->A1, OUTPUT); pinMode(this->A2, OUTPUT); pinMode(this->Z, INPUT); } unsigned MUX::toBin(const unsigned number) { int a = number, m = 1, res = 0; while (a > 0) { res += a % 2 * m; a /= 2; m *= 10; } return res; } unsigned MUX::readZ() { return analogRead(Z); } unsigned MUX::getY() { return Y; } void MUX::shiftPorts() { Y = (Y + 1) % 8; int bin = toBin(Y); digitalWrite(this->A0, bin % 10); digitalWrite(this->A1, bin / 10 % 10); digitalWrite(this->A2, bin / 100); } #endif
Blog criado a fim de registrar o progresso dos projetos referentes ao Arduino para a aula de Física Experimental 2 da Pontifícia Universidade Católica de São Paulo.
terça-feira, 10 de junho de 2014
Código-fonte: mux.h
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário