Привет, дорогой Inte rnet: D
Итак, я написал переводчик «Текст в Морзе», который работал хорошо. Теперь я хочу сделать то же самое с ардуино. Код Морзе должен отображаться мигающим светодиодом. Моя проблема в том, что у меня есть const char* morse[]={"....", ".-", ".-..", ".-..", "---"};
, который я не могу преобразовать или переназначить на новую переменную char str[]
, чтобы дать правильный вывод с помощью светодиода.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define SHORT 2
#define LONG 3
#define PAUSE 800
char sentence[50]="Hello";
const char* morse[500];
const static char* letters[50]={"10","0111","0101","011","1","1101","001","1111","11","1000","010","1011","00","01","000","1001","0010","101","111","0","110","1110","100","0110","0100","0011"}; //A-Z
void setup(){
pinMode(SHORT, OUTPUT);
digitalWrite(SHORT, LOW);
pinMode(LONG, OUTPUT);
digitalWrite(LONG, LOW);
Serial.begin(9600);
all_Caps();
}
void loop(){
all_Caps();
int b=strlen(sentence);
for(int i=0;i<b;i++)morse[i]=letters[sentence[i]-'A'];
showtime();
delay(PAUSE*10);
}
void all_Caps(){
int b=strlen(sentence);
for(int i=0;i<b;i++){
sentence[i]= toupper(sentence[i]);
}
}
void showtime(){
char str[10];
for(int i=0;i<10;i++){
str=morse[i];
}
for(int e=0;e<10;e++){
if(str[e]==1){
digitalWrite(SHORT, HIGH);
delay(50);
digitalWrite(SHORT, LOW);
delay(PAUSE);
}
else if(str[e]==0){
digitalWrite(LONG, HIGH);
delay(300);
digitalWrite(LONG, LOW);
delay(PAUSE);
}
}
}
edit:
Итак Я изменил str=morse[i]
на str[i]=morse[i]
, как сказано в комментариях. Теперь я получил предупреждающее сообщение:
sketch_aug05a.ino:48:19: warning: invalid conversion from 'const char*' to 'char' [-fpermissive]