BASTÃO SINALIZADOR #2

 Logo a baixo está nosso novo sketch para o bastão sinalizador. Este tem 5 opções. Na ultima opção temos a exibição da letra "A". Nosso trabalho agora consiste em faze-lo projetar as outras letras do alfabeto, alguns símbolos e os números de 0 a 9.
O link para fazer o download das matrizes de construção das letras e números está a baixo:


O sketch para copiar e colar (não se assustem com o tamanho! Lembrem-se de que mesmo que o sketch pareça muito complicado, na verdade é apenas a repetição de vários paços muito simples e que já estudamos antes sem grandes dificuldades):

// *******************************Inicio do sketch:***************************

int ligado = 1;
int espaco = 18;

int triguer = A6;
int botao = A7;
int contador = 0;
int estado;
int funcao = 0;

void setup() {

  for (int i = 2; i <= 18; i++) {  // inicia uma sequencia de exibição e teste dos leds;
    pinMode(i, OUTPUT);
  }
  // apresentação inicial:
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, HIGH);
    delay(20);
  }
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, LOW);
    delay(20);
  }
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, HIGH);
    delay(20);
  }
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, LOW);
    delay(20);
  }
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, HIGH);
    delay(20);
  }
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, LOW);
    delay(20);
  }
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, HIGH);
  }
  delay(100);
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, LOW);
  }
  delay(100);
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, HIGH);
  }
  delay(100);
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, LOW);
  }
  delay(100);
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, HIGH);
  }
  delay(100);
  for (int i = 2; i <= 20; i++) {
    digitalWrite(i, LOW);
  }
  delay(100);
                          // fim da apresentação;
}

void loop() {

  // Inicio do programa principal; ************************************

  seletor ();            // função que verifica o estado do potão seletor;

  while (funcao == 1) { // exibe uma seta;

    seletor ();

    estado = analogRead(triguer);

    if (estado < 500) { // dispara a sequencia de piscadas quando o bastão é balançado;
      seta1 ();
    }
  }
  while (funcao == 2) { // exibe um traço;

    seletor ();

    estado = analogRead(triguer);

    if (estado < 500) {
      seta2 ();
    }
  }
  while (funcao == 3) { // exibe um desenho de linhas;

    seletor ();

    estado = analogRead(triguer);

    if (estado < 500) {
      ondas1 ();
    }
  }
  while (funcao == 4) { // exibe um desenho de linhas 2;

    seletor ();

    estado = analogRead(triguer);

    if (estado < 500) { // dispara a sequencia de piscadas;
      ondas2 ();
    }
  }
   while (funcao == 5) { // exibe uma letra ou texto;

    seletor ();

    estado = analogRead(triguer);

    if (estado < 500) { // dispara a sequencia de piscadas;
      A ();
    }
  }
}

// Fim do programa principal; Inicio das funções; ********************

void seletor () {                 // esta função verifica se o botão seletor está pressionado, e aumanta uma unidade na variável FUNÇÃO quando isso ocorre;
  contador = analogRead(botao); 
  if ( contador < 500) {
    funcao++;
    if (funcao > 5 ) { // impede que a variável FUNÇÃO ultrapasse um valor máximo;
      funcao = 0;
    }
    digitalWrite(funcao + 1, HIGH); // faz o led correspondente ao número da função ligar e desligar;
    delay(1000);
    digitalWrite(funcao + 1, LOW);
  }
}

void seta1 () {                     // função da seta;
  for (int j = 0; j <= 17; j++) {
    //corpo da ceta
    for (int i = 8; i <= 12; i++) {
      digitalWrite(i, HIGH);
    }
    delay(ligado);
    for (int i = 2; i <= 17; i++) {
      digitalWrite(i, LOW);
    }
    delay(ligado);
  }
  //ponta da ceta 1
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
  //ponta da ceta 2
  for (int i = 3; i <= 16; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
  //ponta da ceta 3
  for (int i = 4; i <= 15; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
  //ponta da ceta 4
  for (int i = 5; i <= 14; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
  //ponta da ceta 5
  for (int i = 6; i <= 13; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
  //ponta da ceta 6
  for (int i = 7; i <= 12; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
  //ponta da ceta 7
  for (int i = 8; i <= 11; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
  //ponta da ceta 8
  for (int i = 9; i <= 10; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 17; i++) {
    digitalWrite(i, LOW);
  }
  delay(espaco);
}
void seta2 () {       // função da seta2;

  //ponta da ceta 8
  for (int i = 2; i <= 18; i++) {
    digitalWrite(i, HIGH);
  }
  delay(ligado);
  for (int i = 2; i <= 18; i++) {
    digitalWrite(i, LOW);
  }
  delay(ligado);
}
void ondas1 (){                   // função da onda1
  for( int i = 2; i <= 18; i++){
    digitalWrite(i,HIGH);
    digitalWrite(20 - i,HIGH);
    delay(ligado);
    for(int j = 2; j<= 18; j++){
      digitalWrite(j,LOW);
    }
  }
}
void ondas2 (){                   // função da onda2;
  for( int i = 2; i <= 18; i++){
    digitalWrite(i,HIGH);
    digitalWrite(20 - i,HIGH);
    delay(ligado);
  }
    for(int j = 2; j<= 18; j++){
      digitalWrite(j,LOW);
 
  }
}
void A (){
int linha = 0;

int letraA[] = {
//  0        0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,
//  1        18  19   20    21  22    23  24    25  26    27  28    29  30   31  32   33   34   35
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH ,
//  2        36  37   38   39   40   41  42    43  44    45  46    47  48    49  50   51   52   53
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,
//  3        54  53   55   56  57    58  59    60  61    62  63    64  65    66  67   69   70   71
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,
//  4        72  73   74   75  76    77  78    79  80    81  82    83  84    85  86   87   88   89
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW,
//  5       90  91   92    93  94    95  96    97  98    99  100  101  102  103  104  105  106  107
           LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//  6      108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125
           HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//  7      126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143
           HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//  8      144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161
           HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//  9      162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179
           HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//  10     180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197
           HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//   11    198  199  200  201  202  203  204  205  206  207  208  209  210  211  212  213  214  215 
           LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//   12    216  217  218  219  220  221  222  223  224  225  226  227  228  229  230  231  232  233
           LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,LOW ,LOW ,LOW ,
//   13    234  235  236  237  238  239  240  241  242  243  244  245  246  247  248  249  250  251 
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW ,
//   14    252  253  254  255  256  257  258  259  260  261  262  263  264  265  266  267  268  269 
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,
//   15    270  271  272  273  274  275  276  277  278  279  280  281  282  283  284  285  286  287 
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,
//   16    288  289  290  291  292  293  294  295  296  297  298  299  300  301  302  303  304  305
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,HIGH,HIGH,
//   17    306  307  308  309  310  311  312  313  314  315  316  317  318  319  320  321  322  323 
           LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,LOW ,HIGH,HIGH,
};
for(int coluna = 0; coluna <= 17; coluna++){
for(int a = 0; a <= 17; a++){
  int b = a+2;
  if(letraA[linha]== 1){
  digitalWrite(b,HIGH);}
  if(letraA[linha]==0){
     digitalWrite(b,LOW);}
  linha++;
}
delay(ligado);
for(int a = 2; a <= 19; a++){

  digitalWrite(a,LOW);
}

}

}
// ***************************Fim do sketch; **************************


Nenhum comentário:

Postar um comentário