# data[].attributes.attachment_link.title
Dispensador de medicamentos inteligente Cruz Carpintero

# data[].attributes.body
Nome : Gustavo Baptista Franco
Escola : Escola Secundária João Gonçalves Zarco
Idade : 17
Aplicação : https://www.criar-avatar.com/

# data[].attributes.body
O tema da minha apresentação consiste numa máquina dispensadora de medicamentos.

# data[].attributes.body
Vai ser algo que chame a atenção
e desperte curiosidade.

# data[].attributes.body
https://www.tinkercad.com/

# data[].attributes.body
LCD
Botão
2 LEDS
Servomotor
Motor Passo a Passo
Arduino MEGA 2560 R3

# data[].attributes.headline
Montagem do Circuito no Tinkercad e Código do Projeto

# data[].attributes.subject
Montagem do Circuito no Tinkercad e Código do Projeto

# data[].attributes.body
Arduino

# data[].attributes.body
// Variáveis ​​de alarme
// int pinBuzzer = 15; EU REMOVO
int pinLed1 = 16;
int pinLed2 = 17;
pinBoton int = 2;
boolean alarmFlag = HIGH;
int rep;
int numRep = 10;
int timeEnc = 600;
tempo inativo int = 400;
tempo de espera interno = 9900;

// Variáveis ​​ActiveMotor
// int pinIntLamina = 5;
// int pinIN1 = 7;
// int pinIN2 = 8;
int pinPWM = 9;
boolean stateIntLamina;
valor int PWM = 230;
ativação longa [5];
int take = 0;

// Exibir variáveis
long timeMs;
long timeBase;
long currentTime;
longa hora;
minuto longo;
long currentTime;
long minActual;
long secActual;
int timeRet = 10000;

// O código da biblioteca LCD está incluído
#include 

// Inicializa a biblioteca com o número de pinos
LiquidCrystal lcd (4, 6, 11, 12, 13, 14);

// O código da biblioteca Servo está incluído
#include 
 
Servo myservo; // cria o objeto servo
int pos = 0; // posição servo
pinSer int = 19; // pino do servo


// função de configuração
configuração vazia ()
{
  myservo.attach (pinSer); // liga o servo ao pinSer
   
  // tempo de reinicialização
  hora = 8;
  minuto = 34;

  // Cálculo do tempo base
 ConversionHminMs ();
 baseTime = msTime;

  // Configuração do número de colunas e linhas do LCD
 lcd.begin (16,2);

  // Configuração de terminais de campainha, led e botão de alarme
// pinMode (pinBuzzer, OUTPUT); NAO O USO
 pinMode (pinLed1, OUTPUT);
 pinMode (pinLed2, OUTPUT);
 pinMode (pinBoton, INPUT);
 attachInterrupt (0, Switch, RISING);

/ * NÃO USE A PONTE H.
  // Ponte H e configuração do terminal do switch
 pinMode (pinIN1, OUTPUT);
 pinMode (pinIN2, OUTPUT);
 pinMode (pinIntLamina, INPUT);
* /
  // Cálculo dos tempos de ativação do motor

  // Tempo do primeiro tiro
 hora = 8;
 minuto = 35;
 ConversionHminMs ();
 activationTime [0] = msTime;

  // Tempo da segunda tomada
 hora = 8;
 minuto = 36;
 ConversionHminMs ();

timeActivation [1] = timeMs;

 // Hora da terceira tomada
 hora = 8;
 minuto = 37;
 ConversionHminMs ();
 timeActivation [2] = timeMs;
  
  // Tempo da quarta tomada
 hora = 8;
 minuto = 38;
 ConversionHminMs ();
 timeActivation [3] = timeMs;

  // Caso haja mais tomadas, adicione-as abaixo:
  // hora final
 hora = 8;
 minuto = 39;
 ConversionHminMs ();
 timeActivation [4] = timeMs;
}

// função de loop
void loop ()
{

  if (milis () <10000) {
 myservo.write (pos);
 }
 
 / * NÃO USE A PONTE H.
  // Enviando sinais iniciais para a ponte H: motor parado
 digitalWrite (pinIN1, 0);
 digitalWrite (pinIN2, 0);
 analogWrite (pinPWM, valuePWM);
 Desdobramento, desenvolvimento();
 atraso (timeRet);
 * /
 
  / * Desde que o tempo atual seja menor do que o tempo de ativação [leva]
   + timeBase, exibe apenas a hora * /
 Faz
 {
 Desdobramento, desenvolvimento();
 atraso (timeRet);
 currentTime = millis () + baseTime;
 } while (currentTime  177) {
    pos = 0;
    myservo.write (pos);
    }
  
 /*NAO O USO
 Faz
 {
 digitalWrite (pinIN1, 1);
 stateIntLamine = digitalRead (pinIntLamina);
 } while (stateIntSheet == HIGH);
 atraso (200);
 Faz
 {
 digitalWrite (pinIN1, 1);
 stateIntLamine = digitalRead (pinIntLamina);
 } while (stateIntSheet == LOW);
 digitalWrite (pinIN1, 0);
 * /
}

/ * Função de alarme
 Soa intermitentemente uma campainha e, ao mesmo tempo
 um LED acende de forma intermitente, até que o
 botão de desligar o alarme * /

void Alarm ()
{
 para (rep = 0; rep 