Risultati da 1 a 19 di 19

Discussione: Allarme sonoro su gradi temperatura cpu, raffreddata ad acqua, valori e tempi



  1. #1
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0

    Allarme sonoro su gradi temperatura cpu, raffreddata ad acqua, valori e tempi

    Allarme sonoro su gradi temperatura cpu, valori e tempi, vba 2007

    Ciao,
    non avendo molta esperienza non riesco a scrivere un programma in VBA 2007 per fare quanto segue.

    Vorrei essere avvertito con un breve suono se la temperatura della mia cpu video, RAFFREDDATA AD ACQUA, raggiunge certi valori, inoltre se li raggiunge molto velocemente.

    Ho lapossibilità di aggiurnare la cella A1 di Excel in tempo reale, che assume valori numerici con due decimali. Es: 30,12 oppure 55,01 e per questo vorrei scrivere un programma in visula basic.

    Sempre nel foglio Excle nella cella A2 vorrei inserire il valore che se superato fa partire una sub che poi genera un suono, Es: 40,25 oppure 60,00.

    Invece nelle celle A3 e A4 vorrei inserire due parametri molto importanti, secondi e variazione.

    Vorrei partisse una sub con un diverso suono se mettiamo entro 10 secondi la temperatura è salita di 25 gradi, e quindi devo intervenire se non voglio arrecare danni all'hardware :-(.

    Qualcuno ha vogli di aiutarmi?

    Riassumendo:
    A1: lettura in tempo reale della temperatura, es: 42,12
    A2: temperatura per soglia_1, es: 50,50, che se avviene fa avviare allarme_1
    A3: tempo entro cui monitorare variazione, es: 10 secondi
    A4: variazione che se avvenuta nel tempo in A3 fa avviare allarme_2

    Grazie
    Saluti

  2. #2
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    ... nessun aiutino???:286::246:

  3. #3

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao,
    considerando che quello che chiedi non è proprio semplicissimo, si presuppone che tu abbia qualche conoscenza di VBA, quindi...
    allega il file compreso della macro che hai provato a scrivere altrimenti più che un aiuto sembra un "lavoro assegnato". :32:

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  4. I seguenti utenti hanno dato un "Like"


  5. #4
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17
    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Ciao,
    considerando che quello che chiedi non è proprio semplicissimo, si presuppone che tu abbia qualche conoscenza di VBA, quindi...
    allega il file compreso della macro che hai provato a scrivere altrimenti più che un aiuto sembra un "lavoro assegnato". :32:
    condivido e sottoscrivo

    PS: mi sembra tanto un riciclaggio di un post da poco chiuso dello stesso autore....

  6. #5
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    Grazie per la risposta Cromagno,
    io ho soltanto un programma che funziona e che vorrei modificare con l'aggiunta della variabile tempo, posso allegare il codice, il programma lavora su 3 valori oltre l'attule e tre valori sotto l'attuale, me ne basta uno se sale oltre il valore in A1.
    Grazie
    Saluti

    Allego:

    -------------------------------------------------------
    Code:
    Codice: 
    Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
    (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Option Explicit
    Dim A_1 As Variant
    
    Sub Orario()
    DoEvents
    If A_1 <> Worksheets(1).[A1] Then
    
    If Worksheets(1).[A5] <= Worksheets(1).[A2] Then
    Call PlaySound_Min3
    Worksheets(1).[B5].Interior.ColorIndex = 45
    A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] <= Worksheets(1).[A7] Then
    Call PlaySound_Min2
    Worksheets(1).[B5].Interior.ColorIndex = 53
    A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] <= Worksheets(1).[A6] Then
    Call PlaySound_Min
    Worksheets(1).[B5].Interior.ColorIndex = 3
    A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] >= Worksheets(1).[A2] Then
    Call PlaySound_Max3
    Worksheets(1).[B5].Interior.ColorIndex = 5
    A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] >= Worksheets(1).[A3] Then
    Call PlaySound_Max2
    Worksheets(1).[B5].Interior.ColorIndex = 10
    A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] >= Worksheets(1).[A4] Then
    Call PlaySound_Max
    Worksheets(1).[B5].Interior.ColorIndex = 4
    A_1 = Worksheets(1).[A5]
    Else
    Worksheets(1).[B5].Interior.ColorIndex = xlNone
    A_1 = Worksheets(1).[A5]
    End If
    End If
    Application.OnTime Now + TimeSerial(0, 0, 20), "Orario"
    End Sub
    
    Sub PlaySound_Min()
    If Application.CanPlaySounds Then
    Call sndPlaySound32("d:\b\10SEC_4KHZ_200HZ.wav", 2)
    End If
    End Sub
    
    Sub PlaySound_Min2()
    If Application.CanPlaySounds Then
    Call sndPlaySound32("d:\b\10SEC_4KHZ at 5HZ.wav", 2)
    End If
    End Sub
    
    Sub PlaySound_Min3()
    If Application.CanPlaySounds Then
    Call sndPlaySound32("d:\b\10SEC_4KHZ at 10hz.wav", 2)
    End If
    End Sub
    
    Sub PlaySound_Max()
    If Application.CanPlaySounds Then
    Call sndPlaySound32("d:\b\10sec_4khz.wav", 2)
    End If
    End Sub
    Sub PlaySound_Max2()
    If Application.CanPlaySounds Then
    Call sndPlaySound32("d:\b\10SEC_4KHZ_tremolo.wav", 2)
    End If
    End Sub
    Sub PlaySound_Max3()
    If Application.CanPlaySounds Then
    Call sndPlaySound32("d:\b\10SEC_RUMORE_BIANCO.wav", 2)
    End If
    End Sub
    Ultima modifica fatta da:Gerardo Zuccalà; 29/03/16 alle 20:24 Motivo: messo il codice VBA tra CODE

  7. #6
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    nel mio precedente post ho voluto "condensare al massimo" la mia esigenza,
    con chiari esempi,
    so programmare i microcontrollori ma non conosco tutti i trucchi di vba che opera su un PC.

    Steso lo scheletro di istruzioni da usare poi lo sviluppo da solo il programma, spero.
    Qui non ho gli interrupt da gestire come nei microcontrollori....


    grazie
    saluti

  8. #7
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17
    si capisce meglio se inserito con comando CODE
    Codice: 
    Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
        (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Option Explicit
    Dim A_1 As Variant
    
    Sub Orario()
    DoEvents
    If A_1 <> Worksheets(1).[A1] Then
    
    If Worksheets(1).[A5] <= Worksheets(1).[A2] Then
      Call PlaySound_Min3
      Worksheets(1).[B5].Interior.ColorIndex = 45
      A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] <= Worksheets(1).[A7] Then
      Call PlaySound_Min2
      Worksheets(1).[B5].Interior.ColorIndex = 53
      A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] <= Worksheets(1).[A6] Then
      Call PlaySound_Min
      Worksheets(1).[B5].Interior.ColorIndex = 3
      A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] >= Worksheets(1).[A2] Then
      Call PlaySound_Max3
      Worksheets(1).[B5].Interior.ColorIndex = 5
      A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] >= Worksheets(1).[A3] Then
      Call PlaySound_Max2
      Worksheets(1).[B5].Interior.ColorIndex = 10
      A_1 = Worksheets(1).[A5]
    ElseIf Worksheets(1).[A5] >= Worksheets(1).[A4] Then
      Call PlaySound_Max
      Worksheets(1).[B5].Interior.ColorIndex = 4
      A_1 = Worksheets(1).[A5]
    Else
      Worksheets(1).[B5].Interior.ColorIndex = xlNone
      A_1 = Worksheets(1).[A5]
    End If
    End If
    Application.OnTime Now + TimeSerial(0, 0, 20), "Orario"
    End Sub
    
    Sub PlaySound_Min()
        If Application.CanPlaySounds Then
            Call sndPlaySound32("d:\b\10SEC_4KHZ_200HZ.wav", 2)
        End If
    End Sub
    
    Sub PlaySound_Min2()
        If Application.CanPlaySounds Then
            Call sndPlaySound32("d:\b\10SEC_4KHZ at 5HZ.wav", 2)
        End If
    End Sub
    
    Sub PlaySound_Min3()
        If Application.CanPlaySounds Then
            Call sndPlaySound32("d:\b\10SEC_4KHZ at 10hz.wav", 2)
        End If
    End Sub
    
    Sub PlaySound_Max()
        If Application.CanPlaySounds Then
            Call sndPlaySound32("d:\b\10sec_4khz.wav", 2)
        End If
    End Sub
    Sub PlaySound_Max2()
        If Application.CanPlaySounds Then
            Call sndPlaySound32("d:\b\10SEC_4KHZ_tremolo.wav", 2)
        End If
    End Sub
    Sub PlaySound_Max3()
        If Application.CanPlaySounds Then
            Call sndPlaySound32("d:\b\10SEC_RUMORE_BIANCO.wav", 2)
        End If
    End Sub

  9. #8
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Citazione Originariamente Scritto da zio_tom Visualizza Messaggio
    si capisce meglio se inserito con comando CODE
    ok ho inserito il codice di annasgora nel post #5 tra code

  10. #9
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    Grazie Zio Tom grazie Gerardo ma... con tutta l'esperienza che avete penso che far partire delle specifiche sub legate ala solo variare del valore di una cella e fare un controllo sul tempo nel quale avviene la variazione..... io...... immagino..... che non richieda più di 15 minuti se si conoscono tutte le istruzioni di VBA Exel 2007. Io dovrei sperimentarne alcune.... oppure userei un ciclo for next ma così facendo penso che mi si "blocchi" il programma nel loop, salvo inserire dei wait che equivalgono a blocchi. Come dicevo devo far partire degli eventi sun cambio valore cella A1 e poi legarli a se avvengono in una specifica variazione ed in uno specifico tempo.

    Va be, grazie a tutti comunque.

    Poi farò io tutti i test del caso

  11. #10
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    Codice: 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Static AncAdress As String, AncCell As Variant 
    If AncAdress <> "" Then 'for first initialization. 
    If AncCell <> Range(AncAdress) Then 
    'The cell that you just left has been changed. 
    'Put action to be taken. 
    Stop 
    End If 
    End If 
    AncAdress = Target.Address 
    AncCell = Target.Value2 
    End Sub
    Ultima modifica fatta da:cromagno; 30/03/16 alle 10:54 Motivo: Inserito codice tra i tag CODE...

  12. #11
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    Codice: 
    Private Sub Worksheet_Calculate()
    With Sheets("Sheet2")
    If .Cells(1, 1) = "" Then .Cells(1, 1) = Now
    x = Now - .Cells(1, 1)
    If Now - .Cells(1, 1) >= TimeValue("00:00:30") Then
    .Cells(1, 1) = Now
    
    MsgBox "it's time!"
    
    End If
    End With
    End Sub
    Ultima modifica fatta da:cromagno; 30/03/16 alle 10:55 Motivo: Inserito codice tra i tag CODE...

  13. #12
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1116
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1
    io proverei così tanto per cominciare
    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)           
    If Target.Address = "$A$1" then
       If target > range("A2") then 
          msgbox "Temperatura superata"
       End If
    End If           
    End Sub
    se funziona puoi sostituire il messaggio con l'allarme sonoro

  14. #13
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    grazie

  15. #14

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao a tutti,

    io continuo a non capire 1 o 2 cose....

    hai scritto:
    A1: lettura in tempo reale della temperatura, es: 42,12
    ma l'unico "Application.OnTime" che ho visto nel codice riguarda "20 secondi".

    Inoltre non ho capito se hai già il codice per ottenere la temperatura della CPU?!?

    Ma perchè non alleghi il file per capire esattamente quello che hai e quello che ti manca?!

    P.S.
    Stai continuando a mettere i codici senza i tag appropriati.
    Dai un'occhiata alla sezione "Annunci dello Staff" e specialmente a questo thread:
    http://www.forumexcel.it/forum/2-ann...tra-i-tag-code

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  16. #15
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    Un software creato dal produttore della CPU ed una funzione DDE mi consente di avere in tempo reale la cella A1 che varia.
    Devo semplicemente monitorare questo valore in A1.
    1. allarme se supera valore in A2, nessun allarme se non lo supera.
    2. allarme se supera del valore in A3 il valore in A1 entro il tempo in A4, altrimenti nessun allarme se varia lentamente.

    Riassumendo:
    A1: lettura in tempo reale della temperatura, es: 42,12
    A2: temperatura per soglia_1, es: 50,50, che se avviene fa avviare allarme_1
    A3: tempo entro cui monitorare variazione, es: 10 secondi
    A4: variazione che se avvenuta nel tempo in A3 fa avviare allarme_2

    Ho capito come allegare il codice, spero di potervi girare la versione completa e testata, ma prima vorrei un consiglio su quali funzioni usare,
    il programma deve girare per ore ed ore.

    Nessun allarme se soglie non superate e nessun allarme se nel tempo A1 sale molto lentamente,
    grazie.

  17. #16
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    non ho alcun codice se non il vecchio che usavo solo per le soglie e non per la funzione a tempo,
    che è motivo delle mie richieste in quanto non so come si comporta VBA nel suo interno "core".
    grazie

  18. #17

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ho potuto fare solo delle prove "parziali", comunque....
    Rimanendo valido il codice di "patel", per la variazione in un determinato tempo, potresti appoggiarti ad una cella (la A6 nel file allegato) oppure ad un nome definito.

    I codici usati:

    Codice: 
    Sub Temp_CPU()
    Dim DT As String, Temp As Double
    Worksheets("Foglio1").Range("A6").Value = CDbl(Worksheets("Foglio1").Range("A1").Value + 0)
    DT = "00:00:" & CStr(Worksheets("Foglio1").Range("A3").Value)
    Application.OnTime Time + TimeValue(DT), "Verifica"
    End Sub
    
    
    Sub Verifica()
    Dim Temp_Prec As Double, Temp_Att As Double, Soglia As Double
    
    
    Temp_Prec = CDbl(Worksheets("Foglio1").Range("A6").Value + 0)
    Temp_Att = CDbl(Worksheets("Foglio1").Range("A1").Value + 0)
    Soglia = CDbl(Worksheets("Foglio1").Range("A4").Value + 0)
    
    
    If (Temp_Att - Temp_Prec) > Soglia Then
        MsgBox "Aumento eccessivo della temperatura"
    End If
    Call Temp_CPU
    End Sub
    Come prima...sostituirai gli allarmi sonori al posto del msgbox.
    Nel file allegato il valore della cella A1 lo devi variare tu (ogni 10 secondi farà la verifica).
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  19. #18
    L'avatar di anassagora
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    milano
    Messaggi
    13
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    1000 grazie sig. Cromagno,
    ora mi studio a fondo ogni singola istruzione che ha utilizzato e faccio un bel testing :-).
    Noto che
    Application.OnTime Time

    è una istruzione che consente al computer di continuare a lavorare, a differenza dei for next o dei wait,
    approfondirò leggendomi tutti i dettagli possibili di questo comando sui manuali vba 2007.

    Faccio sapere,
    saluti
    anassagora

  20. #19

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Citazione Originariamente Scritto da anassagora Visualizza Messaggio
    1000 grazie sig. Cromagno,
    ora mi studio a fondo ogni singola istruzione che ha utilizzato e faccio un bel testing :-).
    Noto che
    Application.OnTime Time

    è una istruzione che consente al computer di continuare a lavorare, a differenza dei for next o dei wait,
    approfondirò leggendomi tutti i dettagli possibili di questo comando sui manuali vba 2007.

    Faccio sapere,
    saluti
    anassagora
    Sono lusingato per il "signor" ed il "lei" ma non è necessario :32:

    Puoi provare a dare uno sguardo a questo link che riguarda le "Azioni a tempo":
    http://mikevba.altervista.org/macro/mikevba111.htm

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

Discussioni Simili

  1. [Risolto] FUNZIONE SE: calcolo tempi
    Di sangylordy nel forum Domande su Excel in generale
    Risposte: 19
    Ultimo Messaggio: 09/03/17, 15:44
  2. [Risolto] avviso sonoro
    Di givi79 nel forum Domande su Excel VBA e MACRO
    Risposte: 16
    Ultimo Messaggio: 30/12/16, 17:36
  3. Nuovi Gradi Utente/Ranks
    Di Gerardo Zuccalà nel forum Problemi, suggerimenti e Novità del forum
    Risposte: 0
    Ultimo Messaggio: 09/02/16, 12:20
  4. Scrittura sfondo acqua...
    Di Emanuele Gozza nel forum Domande su Excel in generale
    Risposte: 14
    Ultimo Messaggio: 25/10/15, 19:22
  5. [Risolto] Tabella calcola tempi per corridori.
    Di GioGio nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 14/06/15, 08:49

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •