Go Down

Topic: Code arduino  (Read 120 times) previous topic - next topic

Marref22

BN jour les équipe s'il vous plait j'ai besoin d'un code qui permet de donner un signal carré de rapport 0.5 fix mais mais de fréquence variable en fonction de temps et c'est ça le balayage fréquentielle pour mon projet:
[0  10ms] 35kHz
[10ms 20ms] 34khz
[ 20ms 30ms] 33khz
[30ms 40ms] 32khz
[40ms 50ms] 31khz
[50ms 60ms] 30khz
[ 60ms 10s  ]  30khz
[10s.  11s] 25 kHz
[11s.  12s]. 20 kHz
[12s. 13s] 15 kHz
[13s.  14s] 10khz
[14s. 15s] 6khz et reste toujours 6khz
J'attends votre réponse et Mercie

lastchancename

#1
Feb 23, 2019, 10:54 am Last Edit: Feb 23, 2019, 10:54 am by lastchancename
Quote
BN day the team please I need a code that allows to give a square signal ratio 0.5 fix but variable frequency depending on time and that's the frequency sweep for my project:
[0  10ms] 35kHz
[10ms 20ms] 34khz
[ 20ms 30ms] 33khz
[30ms 40ms] 32khz
[40ms 50ms] 31khz
[50ms 60ms] 30khz
[ 60ms 10s  ]  30khz
[10s.  11s] 25 kHz
[11s.  12s]. 20 kHz
[12s. 13s] 15 kHz
[13s.  14s] 10khz
[14s. 15s] 6khz et reste toujours 6khz

Thanks
Experienced responders have a nose for laziness, (they were beginners once)... Sure, there are trolls, chest-beaters, and pretenders - but the help you'll get here is about as good as it gets - if you try to help youself!.

J-M-L

#2
Feb 23, 2019, 10:57 am Last Edit: Feb 23, 2019, 11:46 am by J-M-L
(ne postez pas en Français dans le forum en Anglais)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

fdufnews

#3
Feb 23, 2019, 11:07 am Last Edit: Feb 23, 2019, 11:12 am by fdufnews
Je crois que tu es parti sur de mauvaises bases.
Je t'engage à lire ça, ça et ça.
Comme le dit la signature de lastchancename on est pas là pour faire ton boulot. Donc tu commences par apprendre ici par exemple ensuite tu viens poser des questions pertinentes et là on peut t'aider.

J-M-L

#4
Feb 23, 2019, 11:46 am Last Edit: Feb 23, 2019, 11:59 am by J-M-L
Si vous ne souhaitez pas une hyper précision à la micro-seconde et au Hertz près , vous pouvez utiliser la fonction tone() pour générer la fréquence et vérifier dans la loop() la valeur de millis() ou micros() pour décider de quand passer à l'intervalle suivant.

On vous laisse explorer et revenir avec un code qui pourrait ressembler à cela:
Code: [Select]
struct {
  unsigned long debutIntervalle;
  unsigned int frequence;
} sequenceur[] = {
  {0, 35000u},
  {10000, 34000u},
  {20000, 33000u},
  {30000, 32000u},
  {40000, 31000u},
  {50000, 30000u},
  {60000, 30000u},  // <<<< PAS DE  CHANGEMENT DE FREQUENCE ???
  {10000000, 25000u},
  {11000000, 20000u},
  {12000000, 15000u},
  {13000000, 10000u},
  {14000000, 6000u},
};

const size_t nbIntervalles = sizeof(sequenceur) / sizeof(sequenceur[0]);
size_t intervalleEnCours = 0;
const uint8_t freqPin = 7;

uint32_t decalageDepart; // pour tenir compte du temps de boot de l'arduino et ne pas trop rogner sur le premier intervalle
uint32_t prochainTopChrono;

void initialization()
{
  // A ECRIRE
}

void reglageProchainIntervalle()
{
  // A ECRIRE
}

void setup() {
  Serial.begin(115200);
  initialisation();
}

void loop()
{
  if ((intervalleEnCours < nbIntervalles) && (micros() >=  prochainTopChrono)) reglageProchainIntervalle();
}
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up