
O que é eletrônica?
É o estudo do comportamento e do controle dos elétrons livres do átomo
semicondutor e condutor.
Ela é uma ciência?
Sim.
Tudo que é estudado é uma ciência.


O uso intencional da ciência !
millis()
Realmente a compreensão do funcionamento da função millis()
é a princípio meio confusa, mas eu preparei um GIF que ajuda muito a compreender o funcionamento dessa função
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Biblioteca MAX6675
Hexadecimal do OledSendPC

Veja o vídeo clicando na imagem
/*
***********************************************
* Visite o site "ESPAÇO DIGITAL em
* https://sistemasnb.wixsite.com/sistemas-nb
* Software versão : Arduino 1.8.9
* Firmware (Sketch) : Acelerômetro "ADXL335B"
* Data da criação __/__/__
* Autor : Brincando com Idéias
* Modificado em _01_/06_/_19_ por : Jacobson G. Ferreira
* Descrição e nota : foi modificdo os parâmetros de
* inclinações para se adapitar com o acelerômetro ADXL335 deste lote
* Foi incluido seis LEDs para monitorar os movimentos X,Y,Z
* Fiz uso dos Registradores de Uso Geral com o intuito de simplificar
* o programa (DDR e PORT)
* Caso o seu acelerômetro não funcione corretamente, deve-se
* alterar as coniguraçoes de inclinação também
* **********************************************
* Notei que há acelerômetros com mais ou menos senssibilidade que outros
* portanto, construi esta tabela de referência pra configureção "deste módulo"
* |------------------------------------------------|
* | posição normal x352 y352 z426 |
* | inclinado p/x x282 y357 z354 |
* | inclinado p/y x356 y252 z337 |
* | inclinado p/z x356 y360 z286 (contra cabeça) |
* |------------------------------------------------|
* ADXL335 5V 3 pinos para comunicação x-out,y-out,z-out
*
* pinos Arduino | pinos ATmega328 | REG Layout |
* 2 | 4 | -> PD2 |
* 3 | 5 | -> PD3 |
* 4 | 6 | -> PD4 |
* 5 | 11 | -> PD5 |
* 6 | 12 | -> PD6 |
* 7 | 13 | -> PD7 |
*/
#define habilita 1 // 1 habilita e 0 desabilita
#define A0_X A0
#define A1_Y A1
#define A2_Z A2
void setup()
{
Serial.begin(115200);
DDRB = 0x05; // desabilita o pino 13
DDRD = 0xff; // habilita todo PORTD em OUTPUT
PORTD = 0x00; // nivela o PORTD em LOW
//Serial.end(); // habilita/desabilita a com RX/TX
}
void loop()
{
int valX = analogRead(A0_X); // A0
int valY = analogRead(A1_Y); // A1
int valZ = analogRead(A2_Z); // A2
//habilitar para auxiliar na confguração
#if habilita == 0
Serial.print(" X: ");
Serial.print(valX);
Serial.print(" Y: ");
Serial.print(valY);
Serial.print(" Z: ");
Serial.println(valZ);
#endif
#if habilita == 1
if (valZ < 300)
{
Serial.println(F(" Posição de (6 horas) eixo Z"));
PORTD = 0x4; //B00000100; // PORTD |= ( 1 << PORTD2 );
}
else if ((valZ < 370) && (valY < 290))
{
Serial.println(F(" Esquerda eixo Y"));
PORTD = 0x8; //B00001000;
}
else if ((valZ < 370) && (valY > 390))
{
Serial.println(F(" Direita eixo Y"));
PORTD = 0x10; //B00010000;
}
else if ((valZ < 370) && (valX < 300))
{
Serial.println(F(" Para Frente eixo X"));
PORTD = 0x20; //B00100000;
}
else if ((valZ < 370) && (valX > 390))
{
Serial.println(F(" Para Trás eixo X"));
PORTD = 0x40; //B01000000;
}
else
{
Serial.println(F(" Posição de (12 horas) eixo Z"));
PORTD = 0x80; //B10000000;
}
#endif
delay(20);
}
// ******** End *********
/*O DIGITAL em
* https://sistemasnb.wixsite.com/sistemas-nb
* Software versão : Arduino 1.8.8
* Data da criação _22_/_05_/_19_
* Firmware (Sketch):
* Autor : Jacobson G. Ferreira
* Modificado em __/__/__ por :
* Descrição e nota : Estudo dos registradores DDR
* e PORT conforme datasheet do -PU # o código
* ativa os pinos 14,15,16,17,18,19 como saídas digitais,
* e iniciliza o 15,16,17,18,19 em HIGH e 14 em LOW
* O REG. PORTC etá em zero, no momento, para não
* aquecer o regulador de tensão em um tempo prolongado
* O resultado do processamento pode ser visualizado
* na saída serial monitor
**********************************************/
// Bibliotecas
// Constantes e definições
// variáveis públicas
// Protótipos de funções
void setup()
{
Serial.begin(9600);
DDRC = B11111111; // Todos pinos são saída digitas (0xff)
PORTC = B100010; //0x3E O pino 14 é referênciado como GND, os demas são HIGH (0x22)
// favor ñ alterar o 1º bit
Serial.print(" Hexadecimal : 0x00"); //imprime no serial o valos da variável PORTC
Serial.println(PORTC, HEX);
Serial.print(" Decimal : ");
Serial.println(PORTC, DEC);
Serial.print(" Binário : 0b");
Serial.println(PORTC, BIN);
}
void loop()
{
}
// ................... end .....................
/*
* Conecte cinco LEDs com seus resistores nos pinos:
* 15,16,17,18,19 (470 À 1000 Ohms de 125mW (1/8))
* todos com o cátodo conectdos ao pino 14
* Estes pinos são canais analóicos configurados para digital:
* A0 = 14 configurado para ser o (GND), se usar uma shild com Arduino nano
* A1 = 15 caso cntrário, podera alterar este pino para high
* A2 = 16 Se for utilizar um nano, lembre-se que os pinos 20 e 21,
* A3 = 17 são usados pelo SCL e SDA (comunicação I²C), belesa, munheca?
* A4 = 18
* A5 = 19
*/a
// ************** End ***************



/*
***********************************************
* Visite o site "ESPAÇO DIGITAL em
* https://sistemasnb.wixsite.com/sistemas-nb
* Software versão : Arduino 1.8.9
* Firmware (Sketch):
* Data da criação _06_/_07_/_2019_
* Autor : Jacobson G. Ferreira
* Modificado em __/__/__ por :
* Descrição e nota :
**********************************************
*/
int leitura(int a); // protótipo
int valor;
void setup()
{
Serial.begin(9600);
pinMode(9, OUTPUT);
}
void loop()
{
analogWrite(9, leitura(analogRead(A0))); // a função escreve no pino 9, a
Serial.println( valor); // leitura analógica de A0, atravéz da chamada
delay(20); // da função, que passa como parâmetro,
} // a LEITURA da analogRead(A0)
int leitura(int a)
{
#define b 4
valor = (a/b);
return(valor);
}
/* fim */
VÍDEO
FLUXOGRAMA

/*
***************************************************
* Visite o site "ESPAÇO DIGITAL em
* https://sistemasnb.wixsite.com/sistemas-nb
* Software versão : Arduino 1.8.9
* Firmware (Sketch): ProjetoStepper_2
* Data de desenvolvimento : _09_/_05_/_2019_
* Autor : Jacobson G. Ferreira
* Modificado em _12_/_05_/_2019_ por : pelo autor
* Descrição e nota : Programa para estudo dos
* passos de motores digitais BIPOLAR e UNIPOLAR
* Motor de passo exemplo : 28BYJ-45 imã permanente
***************************************************
* 1023 bit-----> ângulo 2x 360º
512 bit-----> ângulo 360º
256 bit-----> ângulo 180º
128 bit-----> ângulo 90º
64 bit-----> ângulo 45º
32 bit-----> ângulo 22,5º
16 bit-----> ângulo 11,25º
8 bit-----> ângulo 5,627º
2 bit-----> angulo 1,44º
1 bit-----> qngulo 0,2245º
*/
// Definições
#define TempoSentidoHoario 2 //Mude aqui o Tempo, de (2 à 200)
#define TempoSentidoAntiHorario 2
#define fin_de_curso 100
unsigned int bits [36] = {
1023, 511, 255, 127,
63, 63, 63, 63,
31, 31, 31, 31,
15, 15, 15, 15,
7 , 7 , 7 , 7 ,
3 , 3 , 3 , 3 ,
1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1};
unsigned int angulo;
// Protótipos
void passo_1(void);
void passo_2(void);
void passo_3(void);
void passo_4(void);
void passo_4(void);
void passo_3(void);
void passo_2(void);
void passo_1(void);
void setup() {
Serial.begin(9600);
// definindo a direção das portas
for( byte portas = 8; portas <= 11; portas = portas +1 ){
pinMode( portas, OUTPUT ); digitalWrite( portas, LOW );
}
}
void loop() {
// Sequência de Passo completo com alto torque. (Full step)
for( byte i = 0; i <= 35; i++ ) { // exe os 24 passos, 1023,511,255,127,63x4,31x4,15x4,7x8
for( angulo = 0; angulo <= bits [i]; angulo++ ) {
if( angulo == 0 ) delay( fin_de_curso ); // 0...1023, 0...512, 0...255, 0...127......
Serial.println(bits[i]);
// chamadas da funçõe sentido horário
passo_1();
delay( TempoSentidoHoario );
passo_2();
delay( TempoSentidoHoario );
passo_3();
delay( TempoSentidoHoario );
passo_4();
delay( TempoSentidoHoario );
}
for( angulo = 0; angulo <= bits [i]; angulo++ ) {
if( angulo == 0) delay( fin_de_curso );
// sentido anti horário
passo_4();
delay( TempoSentidoAntiHorario );
passo_3();
delay( TempoSentidoAntiHorario );
passo_2();
delay( TempoSentidoAntiHorario );
passo_1();
delay( TempoSentidoAntiHorario );
}
}
}
// fim do loop
// Início das funções a serem chamadas
void passo_1() {
digitalWrite( 8, HIGH );
digitalWrite( 9, HIGH );
digitalWrite( 10, LOW );
digitalWrite( 11, LOW );
}
void passo_2() {
digitalWrite( 8, LOW );
digitalWrite( 9, HIGH );
digitalWrite( 10, HIGH );
digitalWrite( 11, LOW );
}
void passo_3() {
digitalWrite( 8, LOW );
digitalWrite( 9, LOW );
digitalWrite( 10, HIGH );
digitalWrite( 11, HIGH);
}
void passo_4() {
digitalWrite( 8, HIGH );
digitalWrite( 9, LOW );
digitalWrite( 10, LOW );
digitalWrite( 11, HIGH );
}
//...... fim ......
VÍDEO DO CONTROLE DE CARGA POR CELULAR VIA BLUETOOTH.
BANCADA DE ENSAIO ESPAÇO DIGITAL

CLIQUE NA NOTA MUSICAL PARA OUVIR O SOM
PASSAGEM DE PARÂMETRO POR VALOR E REFERÊNCIA
/*
***********************************************
* Visite o site "ESPAÇO DIGITAL em
* https://sistemasnb.wixsite.com/sistemas-nb
* Software versão : Arduino 1.8.8
* Data da criação _22_/_05_/_19_
* Firmware (Sketch):
* Autor : Jacobson G. Ferreira
* Modificado em __/__/__ por :
* Descrição e nota : Estudo dos registradores DDR
* e PORT conforme datasheet do ATmeg328P-PU # o código
* ativa os pinos 14,15,16,17,18,19 como saídas digitais,
* e iniciliza o 15,16,17,18,19 em HIGH e 14 em LOW
* O REG. PORTC etá em zero, no momento, para não
* aquecer o regulador de tensão em um tempo prolongado
* O resultado do processamento pode ser visualizado
* na saída serial monitor
**********************************************/
// Bibliotecas
// Constantes e definições
// variáveis públicas
// Protótipos de funções
void setup()
{
Serial.begin(9600);
DDRC = B11111111; // Todos pinos são saída digitas (0xff)
PORTC = B100010; //0x3E O pino 14 é referênciado como GND, os demas são HIGH (0x22)
// favor ñ alterar o 1º bit
Serial.print(" Hexadecimal : 0x00"); //imprime no serial o valos da variável PORTC
Serial.println(PORTC, HEX);
Serial.print(" Decimal : ");
Serial.println(PORTC, DEC);
Serial.print(" Binário : 0b");
Serial.println(PORTC, BIN);
}
void loop()
{
}
// ................... end .....................
/*
* Conecte cinco LEDs com seus resistores nos pinos:
* 15,16,17,18,19 (470 À 1000 Ohms de 125mW (1/8))
* todos com o cátodo conectdos ao pino 14
* Estes pinos são canais analógicos configurados para digital:
* A0 = 14 configurado para ser o (GND), se usar uma shild com Arduino nano
* A1 = 15 caso cntrário, podera alterar este pino para high
* A2 = 16 Se for utilizar um nano, lembre-se que os pinos 20 e 21,
* A3 = 17 são usados pelo SCL e SDA (comunicação I²C), belesa, munheca?
* A4 = 18
* A5 = 19
*/a
// ************** End ***************
/*
Criação:------------------------------Jacobson da Glória Ferreira
Data:---------------------------------01/05/2017
Compilador:---------------------------Micro C PRO for Pic Microchip
Micro controlador utilizado:----------PIC 16F84A Microchip
Programador utilizado:----------------PIC Kit 3 Microchip
Este programa aciona uma sequência de oito LEDs de efeito vai vem.
*/
#define T 100
//#CASE
void main()
{
TRISB = 0b00000000;
PORTB = 0b00000000;
while(1)
{
RB0_bit = 0;
delay_ms (T);
RB0_bit = 0;
delay_ms (10);
RB1_bit = 1;
delay_ms (T);
RB1_bit = 0;
delay_ms (10);
RB2_bit = 1;
delay_ms (T);
RB2_bit = 0;
delay_ms (10);
RB3_bit = 1;
delay_ms (T);
RB3_bit = 0;
delay_ms (10);
RB4_bit = 1;
delay_ms (T);
RB4_bit = 0;
delay_ms (T);
RB5_bit = 1;
delay_ms (T);
RB5_bit = 0;
delay_ms (10);
RB6_bit = 1;
delay_ms (T);
RB6_bit = 0;
delay_ms (10);
RB7_bit = 1;
delay_ms (T);
RB7_bit = 0;
delay_ms (10);
RB6_bit = 1;
delay_ms (20);
RB6_bit = 0;
delay_ms (10);
RB5_bit = 1;
delay_ms (T);
RB5_bit = 0;
delay_ms (10);
RB4_bit = 1;
delay_ms (T);
RB4_bit = 0;
delay_ms (10);
RB3_bit = 1;
delay_ms (T);
RB3_bit = 0;
delay_ms (10);
RB2_bit = 1;
delay_ms (T);
RB2_bit = 0;
delay_ms (10);
RB1_bit = 1;
delay_ms (T);
RB1_bit = 0;
delay_ms (10);
}
}
Qualquer dúvida faça contato
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Abaixo temos a forma das ondas dos 7 bits, utilizando o osciloscópio do PROTEUS.

Este projeto, utilizando o uC PIC 16F84A, aciona um display de 7 segmentos em uma contagem de 0Fh (hexadecimal) no tempo de 1segundo em um laço contínuo e pode der otimizado fasendo uso de um vetor. O código fonte está disponível logo a baixo

/*Display Hexadecimal
Projeto: JACOBSON DA GLÓRIA FERREIRA
Compilador utilizado para este projeto Micro C PRO for PIC MIcrochip
*/
#define T 500 // meio seg
#case
void main()
{
TRISB =0x00; // zerando o registrador TRISB
PORTB =0xFF; // setando o registrador PORTB
// loop
while(1)
{
portb = 0x3F; //0 1111111
delay_ms(T);
portb = 0x06; //1 110
delay_ms(T);
portb = 0x5B; //2 1011011
delay_ms(T);
portb = 0x4F; //3 1001110
delay_ms(T);
portb = 0x66; //4 1100110
delay_ms(T);
portb = 0x6D; //5 1101101
delay_ms(T);
portb = 0x7D; //6 1111101
delay_ms(T);
portb = 0x07; //7 111
delay_ms(T);
portb = 0x7F; //8 1111111
delay_ms(T);
portb = 0x6F; //9 1101111
delay_ms(T);
portb = 0x77; //A 1110111
delay_ms(T);
portb = 0x7C; //B 1111100
delay_ms(T);
portb = 0x39; //C 111001
delay_ms(T);
portb = 0x5E; //D 1011110
delay_ms(T);
portb = 0x79; //E 1111001
delay_ms(T);
portb = 0x71; //F 1110001
delay_ms(T);
}
}
Qualquer dúvida faça contato
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ON/OFF COM UM ÚNICO BOTÃO S1
/*
***********************************************
* Visite o site "ESPAÇO DIGITAL em
* https://sistemasnb.wixsite.com/sistemas-nb
* Software versão : Arduino 1.8.8
* Data da criação _22_/_05_/_19_
* Firmware (Sketch):
* Autor : Jacobson G. Ferreira
* Modificado em __/__/__ por :
* Descrição e nota : Estudo dos registradores DDR
* e PORT conforme datasheet do -PU # o código
* ativa os pinos 14,15,16,17,18,19 como saídas digitais,
* e iniciliza o 15,16,17,18,19 em HIGH e 14 em LOW
* O REG. PORTC etá em zero, no momento, para não
* aquecer o regulador de tensão em um tempo prolongado
* O resultado do processamento pode ser visualizado
* na saída serial monitor
**********************************************/
// Bibliotecas
// Constantes e definições
// variáveis públicas
// Protótipos de funções
void setup()
{
Serial.begin(9600);
DDRC = B11111111; // Todos pinos são saída digitas (0xff)
PORTC = B100010; //0x3E O pino 14 é referênciado como GND, os demas são HIGH (0x22)
// favor ñ alterar o 1º bit
Serial.print(" Hexadecimal : 0x00"); //imprime no serial o valos da variável PORTC
Serial.println(PORTC, HEX);
Serial.print(" Decimal : ");
Serial.println(PORTC, DEC);
Serial.print(" Binário : 0b");
Serial.println(PORTC, BIN);
}
void loop()
{
}
// ................... end .....................
/*
* Conecte cinco LEDs com seus resistores nos pinos:
* 15,16,17,18,19 (470 À 1000 Ohms de 125mW (1/8))
* todos com o cátodo conectdos ao pino 14
* Estes pinos são canais analógicos configurados para digital:
* A0 = 14 configurado para ser o (GND), se usar uma shild com Arduino nano
* A1 = 15 caso cntrário, podera alterar este pino para high
* A2 = 16 Se for utilizar um nano, lembre-se que os pinos 20 e 21,
* A3 = 17 são usados pelo SCL e SDA (comunicação I²C), belesa, munheca?
* A4 = 18
* A5 = 19
*/a
// ************** End ***************
Este aplicativo foi desenvolvido em linguagem "C" e exibe o resultado no console do Windows tamanho: 17804 bytes (17KB)
Ao tentar baixar, o Google irá te proteger exibindo avisos por ser um executável, isso é normal. Até eu fico com medo com os avisos apavorantes :)
NÃO É UM VÍRUS, OK?
baixe o aplicativo para cálculo de resistor p/ LED clicando aqui


1/8 W

CCS PCWHD Compiler version 5.025


Display LCD com o PIC 16F628A da Microchip
// ESPAÇO DIGITAL
// Data: 20/01/2018
MCU: POC16F628A
// SOFTWARE: CCS PCW
//código de teste para o display LCD INTERFACE HM
#include <16F628A.h>
#fuses XT, NOWDT, NOLVP, PUT
#use delay(clock = 4M)
#use fast_io(b) // modo manual, porém mais rápido e eficaz.
#use fast_io(a) // É necessário setar o TRIS
#byte TRIS = 0X86
#define rs pin_a0 //caracter/comando
#define enable pin_a1 //pulso de habilitação "clock"
#define botao pin_a2 // pino de entrada
#define limpaLCD 0x01 //"limpa a tela"
#define linha_2 0xC0 //vai para a linha 2
#define linha_1 0x80 //vai para a linha1
#case
/*--------------------------------------
PROTÓTIPOS DE FUNÇÕES
--------------------------------------*/
void inicia_LCD(void); //função
void LCD_texto(char letra); //função
void LCD_comando(int comando); //função
void main()
{
set_tris_b(0x00); //CONFIGURA O PORTB COMO SAÍDA
set_tris_a(0x04); // configura o pino a2 como entrada
inicia_lcd();
LCD_comando(linha_1);
printf (LCD_texto, "INICIALIZANDO...");
delay_ms (100);
LCD_comando(linha_2);
LCD_texto("Pressiono batao");
delay_ms (3000);
LCD_comando (limpaLCD);
delay_ms (5);
while(TRUE)
{
LCD_comando(linha_1);
LCD_texto ("*ESPACO DIGITAL*");
delay_ms (3000);
//LCD_comando (limpaLCD);
//delay_ms (5);
if (!input(pin_a2))
{
LCD_comando(linha_1);
printf(LCD_texto, " Visite o site ");
LCD_comando(linha_2);
LCD_texto ("<ESPACO DIGITAL>");
delay_ms (3000);
LCD_comando (limpaLCD);
delay_ms (5);
LCD_comando(linha_1);
printf (LCD_texto, " Programacao e ");
LCD_comando(linha_2);
LCD_texto ("EletronicDigital");
delay_ms (3000);
LCD_comando (limpaLCD);
delay_ms (5);
LCD_comando(linha_1);
printf (LCD_texto, " https:// ");
LCD_comando(linha_2);
LCD_texto(" wixsite/ ");
delay_ms (3000);
LCD_comando (limpaLCD);
delay_ms (5);
LCD_comando(linha_1);
printf (LCD_texto, " sistemas_nb ");
LCD_comando(linha_2);
LCD_texto (" .com.br ");
delay_ms (3000);
LCD_comando (limpaLCD);
delay_ms (5);
}
}
}
// ...................................................................................................................................
void inicia_lcd()
{
output_low(rs); //COLOCA lcd no modo de comando
output_b(0x38); //configura modo 8bits, 2linhas e 5x7 pixelz.
output_high(enable); //pulso de enable
output_low(enable);
delay_ms(20); //timing do display
output_b(0x0c); //configura o cursor
output_high(enable); //pulso em enable
output_low(enable);
output_b(0x06); //incremento a direita do cursor
output_high(enable); //pulso em enable
output_low(enable);
output_b(limpaLCD); // limpa display
output_high(enable); //pulso em enable
output_low(enable);
delay_ms(5);
}
void LCD_texto(char letra)
{
output_high(RS); // modo de dados
output_b(letra); //coloca o carater recebido no portB
output_high(enable);//pulso no enable
delay_us(500);
output_low(enable);
}
void LCD_comando(int comando)
{
output_low(RS); //modo de comando
output_b(comando); //coloca o comando recebido no portB
output_high(enable); //pulso no enabe
delay_us(500);
output_low(enable);
}
//4% Memória RAM -- 24% Memória ROM
//FIM
T//////////////////////////////////////////////////////////////////////////////////////////////////////////









_Adxl.jpg)





// ////////////////////////////////////////////////
// Programa de intuito didático a ser executado
// no Windows 32 e 64 bits
// Software : DEV C++ 4.9.9.2
// Data : 12/11/18
// Autor : Jacobson G. Ferreira
// Descrição : O programa realiza a
// troca dos valores das variáveis X,Y e auxiliar
// ///////////////////////////////////////////////
#include <stdio.h>
#include <windows.h>
int main()
{
int X, Y, aux;
printf("\nDigite o valor para X : ");
scanf("%i", &X);
printf("\nDigite um valor para Y : ");
scanf(" %i", &Y);
getchar();
puts(" ");
//...........
aux = Y;
Y = X;
X = aux;
//...........
printf("\n Os valores das varia\'veis foram trocadas com sucesso!");
printf("\n\n........\n");
printf("\n X e\' %i\n\n Y e\' %i\n\n aux e\' %i", X, Y, aux);
system("pause > null");
}
// ///////////////////// fim //////////////////////
/*
* Software : Arduino 1.8.5
* Autor : Jacobson da Glória Ferreira
* Data : 02/07/2018
* Descrição : programa exemplo de utilização do recurso "cão de guarda" WDT
* Link do site : < https://sistemasnb.wixsite.com/sistemas-nb >
* < Facebook Jacobson ferreira >
*/
// biblioteca AVR
#include <avr/wdt.h>
void SimulaBug();
void setup (){
Serial.begin(9600);
wdt_enable (WDTO_4S) ;// habilita o WDT para monitorar em 4sg
}
void loop () {
static int contador = 1;
Serial.print(F("var contador = "));
Serial.println(contador);
contador++; // incrementando a variável contador em 1
delay(500);
wdt_reset (); // invoca o reset. Entrara em ação se o programa travar.
//se conntador for maior que 4, forçar um travamento
if(contador > 10){
Serial.println("\t\t forçando travamento proposital! Resetando...\nRestabelecendo...");
SimulaBug(); // invoca função de travamento
}
}
//..............................
void SimulaBug(){
while (true); // loop infinito, simulando travamento.
}
//.............................
/*
* Software: Arduino rev 1.8.7
* Data: 24/10/18
* Autor: Jacobson da Glõria Ferreira
* Descrição do algoritimo: invoca rotina de interrupição
*/
#define saidas 10
#define PinBotao1 2
#define PinBotao2 3
byte degraus = 10;
int tempo = 100;
byte portas[saidas] = {4,5,6,7,8}; //{4,5,6,7,8,9,10,11,12,13}
void setup() {
attachInterrupt(digitalPinToInterrupt(PinBotao1), invocafuncao1, FALLING); //2
attachInterrupt(digitalPinToInterrupt(PinBotao2), invocafuncao2, FALLING); //3
pinMode(PinBotao1, INPUT_PULLUP);
pinMode(PinBotao2, INPUT_PULLUP);
//{4,5,6,7,8,9,10,11,12,13}
for(byte i = 0; i <= 4; i++){
pinMode(portas[i], OUTPUT);
}
}
//==========================================
void loop() {
for(byte i = 0; i <= 4; i++){
digitalWrite(portas[i], HIGH);
delay(tempo);
digitalWrite(portas[i], LOW);
}
}
//==========================================
//OBS: debouncing por filtro capacitivo ou
//switch trigger na porta de entrada
void invocafuncao1(){
tempo = tempo - degraus;
if(tempo < 1){
tempo = 1;
}
}
//==========================================
//OBS: debouncing por filtro capacitivo ou
//switch trigger na porta de entrada
void invocafuncao2(){
tempo = tempo + degraus;
if(tempo > tempo){
tempo = tempo;
}
}
//==========================================
/* debouncing por millis
void invocafuncao1() {
static int tempoArbitrado = 200;
static unsigned long delayDebounce;
static unsigned long tempoInicial = 0;
delayDebounce = (millis() - tempoInicial);
if(delayDebounce >= tempoArbitrado){
tempo = tempo - degrau;
if(tempo < 1){
tempo = 1;
}
tempoInicial = millis();
}
}
//==========================================
debouncing por millis
void invocafuncao2(){
static int tempoArbitrado = 150;
static unsigned long delayDebounce;
static unsigned long tempoInicial = 0;
delayDebounce = (millis() - tempoInicial);
if(delayDebounce >= tempoArbitrado){
tempo = tempo + degraus;
if(tempo > tempo){
tempo = tempo;
}
tempoInicial = millis();
}
} */
//==========================================
//.........................................................
// Software: Arduino Rev 1.8.7
// Data: 30/10/18
// Autor: Jacobson G. Ferreira
// Descrição: funções matemáticas sqrt() e pow() exemplos
//........................................................
void pot(void);
void raiz(void);
//int potencia;
int tempo = 1000;
//float raizQuad;
//..................
float base = 2.5; // mude aqui os valores da base
float expoente = 15.0; // mude aqui os valores do expoente
//.................
float radicando = 3.0; // mude aqui os valores da RAIZ da tensão 380Volts TRIFÁSICA
byte TensaoTrifasica = 220;
void setup() {
Serial.begin(9600);
}
void loop() {
pot();
raiz();
}
void pot(){
//int potencia = pow(2, 8);// A potência de 2.5 elevado à 15 é 931322.56
Serial.print(" A potência de 2,5 elevado à 15 é ");
Serial.println(pow(base, expoente));//float - return double
Serial.println("...................");
delay(tempo);
}
void raiz(){
//float raizQuad = sqrt(2); // Raiz de dois = 1,4142
Serial.print(" A tensão trifásica com neutro concateado é ");
Serial.println(TensaoTrifasica /(sqrt(radicando))); //float - return double
Serial.println("...................");
delay(tempo);
}
// //////////////////////////////
// Software DEV C++ 4.9.9.2
// Autor: Jacobson G. Ferreira
// Data: 08/06/2018
// //////////////////////////////
#include <conio.c>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
void mensagem(void);
byte x[] = {19, 20, 21, 22, 23, 24};
byte y[] = {63, 64, 65, 66, 67, 68};
byte cor[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int main(){
mensagem();
}
void mensagem()
{
while(1)
{
clrscr(); // system("cls")
setlocale(LC_ALL, "Portuguese");
byte C, A, L;
for(C = 0; C <= 14; C++) {
for(A = 0; A <= 5; A+=2 ) {
for(L = 0; L <= 5; L+=2) {
textcolor ( cor[C] );
gotoxy ( y[L], x[A] );
printf("ESPAÇO DIGITAL & ARDUINO");
Sleep(200);
}
}
}
}
}
/*
Software : Code :: Blocks Rev 10.05
Name: CalculoDeslocamento
Copyright:
Author: Jacobson da Glória Ferreira
Date: 26/09/14 22:01
Description: Calcula a distância de ida/volta do atendimento mais a taxa de atendimento fixo
*/
#include <stdio.h> // pré processamento
#include <conio.c> // pré processamento
#include <locale.h> // pré processamento
#define Deslocamento 0.65 //constante
#define TaxaUnica 35.0 // constante
#define Valor 35.0 // constante
#define Fixo 10.0 // constante
#define T 250 // constante
int main(void) {
setlocale(LC_ALL, "Portuguese");
while(1){
system("MODE con cols=168lines=57");//tamanho do console
textcolor(10); // tratamento da impressão
gotoxy(69,3); // tratamento da impressão
printf("<ESPAÇO DIGITAL>"); // tratamento da impressão
gotoxy(57,5); // tratamento da impressão
printf("CÁLCULO DE DESLOCAMENTO PARA ATENDIMENTO"); // tratamento da impressão
gotoxy(40,6); // tratamento da impressão
printf("/////////////////////////////////////////////////////////////////////////////");
float volume; // variável privada
float distancia; // variável privada
int deslocamento; // variável privada
float total; // variável privada
int quantidade; // variável privada
float maximo; // variável privada
// ///////////////////////////////////////////////////////////////////////////
textcolor(11); // tratamento da impressão
printf("\n\n\tCALCULANDO O VALOR DO DESLOCAMENTO:\n\n\tDigite a distacia percorrida pelo ténico em Kilômetros até o local. OBS: só de IDA e cada Km equivale á R$ 0,65 centavos. \n\n\tKm: ");
Beep(3000,T); // alerta sonoro
scanf("%f", &distancia); // leitura do dados
Beep(3000,T); // tratamento da impressão
distancia = distancia * Deslocamento * 2; // valor digitado x 1,30. Ou seja,se for 5 km x 1,30 = 6,50
printf("\n\tO valor em R$, do deslocamento de (IDA E VOLTA) é------------------------------> R$ %.2f\n\n", distancia);
// agurda a impressão
// ///////////////////////////////////////////////////////////////////////////
textcolor(14); // tratamento da impressão
printf("\n\n\tDigite o valor fixado de cada atendimento (sem as casas decimais!) \n\n\tR$ ");
Beep(3000,T); // tratamento da impressão
scanf("%d", &deslocamento); // leitura de dados
Beep(3000,T); // alerta sonoro
total = distancia + deslocamento;
printf("\n\tO total é: ---------------------------------------------------------------------> R$ %.2f\n\n\t",total);
// //////////////////////////////////////////////////////////////////////////
textcolor(12);
printf("\n\tDigite a quantidade de nobreaks. OBS: são R$ 35,00 cada um.\n\n\tQtd ");
Beep(3000,T);
scanf("%d",&quantidade);
Beep(3000,T);
quantidade = quantidade * Valor;
maximo = quantidade + total;
printf("\n\tO semitotal do reembolço é de--------------------------------------------------> R$ %.2f\n\n\t",maximo);
// //////////////////////////////////////////////////////////////////////////
textcolor(9);
printf("\n\tHá estabilizaores neste atendimento? Se sim digite a quantidade. Se não digite \"0\". OBS. cada estabilizador vale R$10,00\n\n\t=> ");
Beep(3000,T);
scanf(" %f", &volume);
Beep(3000,T);
volume = volume * Fixo;
volume = volume + maximo;
printf("\n\tTotal do reembolço a ser pago pela fábrica \" x \" é----------------------------------------> R$%.2f\n\t",volume);
// //////////////////////////////////////////////////////////////////////////
textcolor(15);
printf("\n\n\n\n\tObrigado por utilizar meu software.\n\n\tDIGITE \"QUALQUER TECLA\" PARA RETORNAR OU CLIK NO \"X\" NO CANTO SUPERIOR DIREITO PARA SAIR DO PROGRAMA. \n\n\n\tJACOBSON DA GLóRIA FERREIRA.");
getch();
}
Beep(3000,T);
}
// Software : Arduino Rev. 1.8.7
// Data : 24/11/18
// Autor : Jacobson G. Ferreira
// Descrição : aciona o WDT "cão de guarda" por interrupção externa
#include <avr/wdt.h>
#define pinBotao 2
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(pinBotao), trava, FALLING);
pinMode(pinBotao, INPUT_PULLUP);
wdt_enable(WDTO_2S);
}
void loop() {
wdt_reset();
static byte contador = 0;
contador = contador + 1;
delay(200);
if(contador == 100){
contador = 0;
}
Serial.println(contador);
}
void trava(){
while(1);
}
/*
* Software : ARDUINO IDE 1.8.6
* Nome do arquivo : EFEITO PERSEGUIÇÃO com LEDs
* Data : 29/09/2018
* Autor : Jacobson G. Ferreira
*/
// 0 1 2 3 4 índices
byte portas[5] = {2,3,4,5,6}; // arrey de 5 portas obs: byte portas[5]={};
byte tempo;
void setup() {
Serial.begin(9600);
//...........................
Serial.print(F(" O total de byte na vetor portas é "));
Serial.println(sizeof(portas));
//............................
for(byte ind = 0; ind <= 4; ind++){ // índice 01234
pinMode(portas[ind], OUTPUT);
digitalWrite(portas[ind], LOW);
}
}
void loop(){
tempo = map(analogRead(A0), 0, 1023, 255, 0 ); //tempo = (analogRead(A0)/4);
for(byte i = 0; i <= 4; i++){
digitalWrite(portas[i], HIGH);
delay(tempo + 1); // 0 + 1 até 255 + 1 para que no só incremeto não trave os LEDs no 255
}
for(byte i = 0; i <= 4; i++){
digitalWrite(portas[i], LOW);
delay(tempo + 1); // 0 + 1 até 255 + 1 para que no só incremeto não trave os LEDs no 255
}
//.....................................
for(int i = 4; i >= 0; i--){
digitalWrite(portas[i], HIGH);
delay(tempo);
}
for(int i = 4; i >= 0; i--){
digitalWrite(portas[i], LOW);
delay(tempo);
}
Serial.println(tempo);
}
/* FIM */
======================================================================

Micro servo motor, como programa-lo?
Escrevi este algoritmo para mostrar o funcionamento
automático deste servo.
Este servo possui três fios de cores (marrom ou preto, vermelho e amarelo ou laranja)
O marrom representa o GND, o vermelho o VCC e por fim o amarelo a Entrada de Dados
Veja o vídeo clicando aqui
------------------------
///////////////////////////////////////////////////////////////////////////////////////
// Software : Arduino versão 1.8.8 //
// Data de criação: 06/01/19 //
// Autor : Jacobson G. Ferreira //
// Descrição : Aciona o micro servomotor em trinta e seis passos //
// que vai de 0º até 180º em intervalos de 500 milissegundos //
// Duty Cycle em 90° = 7,1 % - em 0°, 3,3 % - em 180°, 12 % - //
// Corrente em funcionamento com carga : 36 mA e vazio 3 mA //
///////////////////////////////////////////////////////////////////////////////////////
#include <Servo.h> // biblioteca Arduino
#define RETARDO 500 // mude o tempo aqui
#define modoSerial 0 // para ativar o serial, mude do 0 para 1
Servo servo; // instanciando objeto
byte angulo;
byte degraus[] = { 5,10,15,20,25,30,35,40,45,50,
55,60,65,70,75,80,85,90,95,100,
105,110,115,120,125,130,135,140,
145,150,155,160,165,170,175,180 };
void setup (){
servo.attach(8);
#if modoSerial == 1
Serial.begin(9600);
#endif
}
void loop( ){
byte leitura;
for(byte x = 0; x <= 35; x++){
angulo = degraus[x];
servo.write (angulo);
#if modoSerial == 1
leitura = servo.read();
Serial.print("angulo ");
Serial.println(leitura);
#endif
delay(RETARDO);
}
}
/* FIM */
======================================================================
