Arduino Forum

International => Français => Topic started by: Marref22 on Feb 23, 2019, 10:37 am

Title: Code arduino
Post by: Marref22 on Feb 23, 2019, 10:37 am
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
Title: Re: Code arduino
Post by: lastchancename on Feb 23, 2019, 10:54 am
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
Title: Re: Code arduino
Post by: J-M-L on Feb 23, 2019, 10:57 am
(ne postez pas en Français dans le forum en Anglais)
Title: Re: Code arduino
Post by: fdufnews on Feb 23, 2019, 11:07 am
Je crois que tu es parti sur de mauvaises bases.
Je t'engage à lire ça (https://forum.arduino.cc/index.php?topic=394754.0), ça (https://forum.arduino.cc/index.php?topic=315372.0) et ça (https://forum.arduino.cc/index.php?topic=546956.0).
Comme le dit la signature de lastchancename on est pas là pour faire ton boulot. Donc tu commences par apprendre ici par exemple (https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/) ensuite tu viens poser des questions pertinentes et là on peut t'aider.
Title: Re: Code arduino
Post by: J-M-L on Feb 23, 2019, 11:46 am
Si vous ne souhaitez pas une hyper précision à la micro-seconde et au Hertz près , vous pouvez utiliser la fonction tone() (https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/) pour générer la fréquence et vérifier dans la loop() la valeur de millis() (https://www.arduino.cc/reference/en/language/functions/time/millis/) ou micros() (https://www.arduino.cc/reference/en/language/functions/time/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();
}