Show Posts
Pages: [1] 2 3 ... 5
1  International / Generale / Re: [OT] Michele 10K! on: April 27, 2013, 08:56:29 am
19a lettera dell'alfabeto ita smiley-twist

Vi vedo ...  siete tutti a contare sulle dita smiley
se ti può consolare ho fatto z-2 smiley-razz

idem smiley
2  International / Generale / Re: [OT] Michele 10K! on: April 27, 2013, 06:33:42 am
Mi collego solo ora smiley vorrei farti i complimenti per i 10K che intanto sono già diventati 10029 quindi pure in ritardo arrivo...ehehehe...non ci conosciamo molto a parte una discussione su un transistor smiley-razz perchè non partecipo spesso attivamente al forum, ma mi sento in dovere di ringraziarti per i tuoi post dove hai aiutato e consigliato molte persone compreso me nel leggere le risposte smiley
P.S. bello il tortino smiley chi lo ha fatto?
3  International / Generale / Re: Pilotare una sirena d'allarme antifurto con Arduino on: April 24, 2013, 07:27:39 am
No, ero dubbioso perché giusto 1 anno fa avevo costruito e reso pubblico proprio il circuito di un rilevatore di CO2 e CH4:
http://arduino.cc/forum/index.php/topic,79324.0.html

Curioso che sia stato riesumata la cosa da un utente arrivato da poco sul forum.  smiley-wink
Era così interessante?  smiley-razz

[OT] Leo, mi puoi dire in che sezione vanno pubblicati i progetti??? ne avrei qualcuno che vorrei mettere a disposizione smiley [/OT]
4  International / Generale / Re: Pilotare una sirena d'allarme antifurto con Arduino on: April 24, 2013, 05:13:04 am
Alla stessa stregua non potresti fare sensori di gas con un attiny perchè non omologati

Ragazzi, non so...ma a me un sensore GAS autocostruito con Arduino e sensore MQ2 qualche mesetto fa mi ha salvato il c..... quindi il non essere omologati è un conto....ma se io in casa mia mi voglio mettere un sensore gas con allarme visivo per capire in caso di fuga di gas....oppure voglio farmi un sistema di allarme con arduino e montarlo in casa...magari senza sirena esterna ma con allarme silenzioso e modulo gsm sinceramente me ne frego poco dell'omologazione....ha un utile per me...nel caso qualcuno entri in casa mi arriva l'sms faccio benissimo in tempo a verificare tramite la videosorveglianza (per chi ce l'ha) se è realmente così o meno e chiamo le forze dell'ordine...
5  International / Generale / Re: Nuovo progetto di domotica! Servono consigli per ampliare! on: April 24, 2013, 02:10:56 am
Domanda OT per ApofisXII: Hai detto che hai dovuto creare una sorta di server, siccome sto realizzando una cosa simile volevo chiederti su che piattaforma ti sei basato...la classica WAMP? (windows, apache, mysql e php) oppure altro?
6  International / Generale / Re: Batterie LiPo on: April 23, 2013, 10:39:44 am
Mi è venuta così e poi mi son reso conto di quel che ho scritto, era proprio appropriato xD

ahahaha già smiley
7  International / Generale / Re: Batterie LiPo on: April 23, 2013, 09:25:42 am
Non capisco bene questo calcolo:
C= capacità nominale, se è 2000mAh perché 1C è 1A? ed allora 0,5C e 5C a quanto corrispondono?

Sicuramente errore di battitura di Astro smiley la carica a 1C è la carica alla corrente nominale della batteria...ovvero se la LiPo è da 2000mAh carica a 2Ampere a 1C, comunque è sempre bene verificare che la cella supporti quella corrente di carica, altrimenti si fa il botto...
considerando la corrente nominale 2000mAh
carica a 1C = 2,00A
carica a 2C = 4,00A
carica a 05C = 1,00A
carica a 5C = 10,00A

il primo numero è un fattore di moltiplicazione, la C sta per la corrente nominale.
8  International / Generale / Re: Arduino TVout e convertitore BMP2ASM on: April 21, 2013, 06:57:32 am
Ciao, ti ringrazio...ho provato ma nulla da fare purtroppo...
9  International / Generale / Arduino TVout e convertitore BMP2ASM on: April 21, 2013, 02:08:20 am
Salve a tutti, sto cercando di realizzare un disegno personalizzato per la libreria tvout ma purtroppo non riesco, creo il disegno in BMP monocromatico ad 8bit e lo converto in esadecimale con BPM2ASM, ma purtroppo nulla da fare l'immagine non viene visualizzata correttamente, tutte le impostazioni sono fatte correttamente quindi l'unica cosa che posso pensare è che il software fornisca dei dati errati, vorrei provare utilizzando un altro software, qualcuno di voi ne conosce uno?
10  International / Generale / Pelco-D telecamere PTZ su Arduino...trovato codice in C...convertirlo in C++??? on: April 19, 2013, 04:37:55 pm
Salve a tutti ragazzi, vorrei realizzare un piccolo progetto che consiste nel far brandeggiare una telecamera PTZ con dei comandi impartiti da arduino...il problema sta nel protocollo utilizzato, sono riuscito a trovarne un sorgente, ma purtroppo è scritto in C...dovrei convertirlo in linguaggio masticabile da arduino...vi allego il source code...magari qualcuno riesce a darmi una manina smiley-wink

Code:
/*-------------------------------------------------------------------------------
 * Author: Tamir Khason, 2004
 * Email: tamir@khason.biz
 * Web: http://www.dotnet.us/
 *
 * Freeware: Please do not remove this header
 *
 * File: P.cs
 *
 * Description: PELCO P Protocol Implementation dot.NET Way
 * This is GPL software. Do with it as you want, but feed us back any improvements.
 *
 * This is a simple class to control a PELCO PTZ camera via RS422/485
 * 'P' protocol. It supports all of the commands including UP, DOWN, IN, OUT, LEFT,
 * RIGHT, NEAR, FAR, as well as all other extended commands. 
 *
 * To use this, you need to put a RS232->RS422 adapter on the output
 * of your desired serial port.
 *
 * The Pelco doesn't return ANY usefull info back, so you only really need 2-wire support
 * (one way) communications out.
 *
 *
 * Version: 1.4
 * ------------------------------------------------------------------------------*/
using System;
using System.Collections;

namespace Pelco
{
/// <summary>
/// dot.NET Implementation of Pelco P Protocol
/// </summary>
public class P : Pelco
{
private const byte STX = 0xA0;
private const byte ETX = 0xAF;

#region Pan and Tilt Commands
#region Data1
private const byte FocusFar = 0x01;
private const byte FocusNear = 0x02;
private const byte IrisOpen = 0x04;
private const byte IrisClose = 0x08;
private const byte CameraOnOff = 0x10;
private const byte AutoscanOn = 0x20;
private const byte CameraOn = 0x40;
#endregion

#region Data2
private const byte PanRight = 0x02;
private const byte PanLeft = 0x04;
private const byte TiltUp = 0x08;
private const byte TiltDown = 0x10;
private const byte ZoomTele = 0x20;
private const byte ZoomWide = 0x40;
#endregion

#region Data3
private const byte PanSpeedMin = 0x00;
private const byte PanSpeedMax = 0x40;
#endregion

#region Data4
private const byte TiltSpeedMin = 0x00;
private const byte TiltSpeedMax = 0x3F;
#endregion
#endregion

#region Enums
public enum PresetAction {Set,Clear,Goto}
public enum PatternAction {Start,Stop,Run}
public enum Action {Start,Stop}
public enum LensSpeed {Low=0x00,Medium=0x01,High=0x02,Turbo=0x03}
public enum Pan {Left = PanLeft,Right = PanRight}
public enum Tilt {Up = TiltUp,Down = TiltDown}
public enum Iris {Open = IrisOpen,Close = IrisClose}
public enum Zoom {Wide = ZoomWide,Tele = ZoomTele}
public enum Switch {On,Off}
public enum Focus {Near = FocusNear,Far = FocusFar}
#endregion

#region Extended Command Set
public byte[] Preset(uint deviceAddress, byte preset, PresetAction action)
{
byte m_action;
switch (action)
{
case PresetAction.Set:
m_action = 0x03;
break;
case PresetAction.Clear:
m_action = 0x05;
break;
case PresetAction.Goto:
m_action = 0x07;
break;
default:
m_action = 0x03;
break;
}
return Message.GetMessage(deviceAddress,0x00,m_action,0x00,preset);
}

public byte[] Flip(uint deviceAddress)
{
return Message.GetMessage(deviceAddress,0x00,0x07,0x00,0x21);
}

public byte[] ZeroPanPosition(uint deviceAddress)
{
return Message.GetMessage(deviceAddress,0x00,0x07,0x00,0x22);
}

public byte[] AutoScan(uint deviceAddress, Action action)
{
byte m_action;
if(action == Action.Start)
m_action = 0x09;
else
m_action = 0x0B;
return Message.GetMessage(deviceAddress,0x00,m_action,0x00,0x00);
}

public byte[] RemoteReset(uint deviceAddress)
{
return Message.GetMessage(deviceAddress,0x00,0x0F,0x00,0x00);
}

public byte[] Zone(uint deviceAddress,byte zone, Action action)
{
if(zone<0x01 & zone>0x08)
throw new Exception("Zone value should be between 0x01 and 0x08 include");
byte m_action;
if(action == Action.Start)
m_action = 0x11;
else
m_action = 0x13;

return Message.GetMessage(deviceAddress,0x00,m_action,0x00,zone);
}



public byte[] WriteToScreen(uint deviceAddress,string text)
{
if(text.Length > 40)
text = text.Remove(40,text.Length-40);
System.Text.Encoding encoding = System.Text.Encoding.ASCII;
byte[] m_bytes = new byte[encoding.GetByteCount(text)*8];
int i = 0;
byte m_scrPosition;
byte m_ASCIIchr;

foreach(char ch in text)
{
m_scrPosition = Convert.ToByte(i/8);
m_ASCIIchr = Convert.ToByte(ch);
Array.Copy(Message.GetMessage(deviceAddress,0x00,0x15,m_scrPosition,m_ASCIIchr),0,m_bytes,i,8);
i = i + 8;
}

return m_bytes;
}

public byte[] ClearScreen(uint deviceAddress)
{
return Message.GetMessage(deviceAddress,0x00,0x17,0x00,0x00);
}

public byte[] AlarmAcknowledge(uint deviceAddress, uint alarmID)
{
if(alarmID < 1 & alarmID>8)
throw new Exception("Only 8 alarms allowed for Pelco P implementation");
return Message.GetMessage(deviceAddress,0x00,0x19,0x00,Convert.ToByte(alarmID));
}

public byte[] ZoneScan(uint deviceAddress,Action action)
{
byte m_action;
if(action == Action.Start)
m_action = 0x1B;
else
m_action = 0x1D;
return Message.GetMessage(deviceAddress,0x00,m_action,0x00,0x00);
}

public byte[] Pattern(uint deviceAddress,PatternAction action)
{
byte m_action;
switch (action)
{
case PatternAction.Start:
m_action = 0x1F;
break;
case PatternAction.Stop:
m_action = 0x21;
break;
case PatternAction.Run:
m_action = 0x23;
break;
default:
m_action = 0x23;
break;
}
return Message.GetMessage(deviceAddress,0x00,m_action,0x00,0x00);
}

public byte[] SetZoomLensSpeed(uint deviceAddress, LensSpeed speed)
{
return Message.GetMessage(deviceAddress,0x00,0x25,0x00,(byte)speed);
}

public byte[] SetFocusLensSpeed(uint deviceAddress, LensSpeed speed)
{
return Message.GetMessage(deviceAddress,0x00,0x27,0x00,(byte)speed);
}

#endregion

#region Base Command Set

public byte[] CameraSwitch(uint deviceAddress,Switch action)
{
byte m_action = CameraOnOff;
if(action == Switch.On)
m_action += CameraOnOff; //Maybe wrong !!!
return Message.GetMessage(deviceAddress,m_action,0x00,0x00,0x00);

}

public byte[] CameraIrisSwitch(uint deviceAddress,Iris action)
{
return Message.GetMessage(deviceAddress,(byte)action,0x00,0x00,0x00);
}

public byte[] CameraFocus(uint deviceAddress,Focus action)
{
return Message.GetMessage(deviceAddress,(byte)action,0x00,0x00,0x00);
}

public byte[] CameraZoom(uint deviceAddress,Zoom action)
{
return Message.GetMessage(deviceAddress,0x00,(byte)action,0x00,0x00);
}

public byte[] CameraTilt(uint deviceAddress,Tilt action, uint speed)
{
if(speed<TiltSpeedMin)
speed = TiltSpeedMin;
if(speed<TiltSpeedMax)
speed = TiltSpeedMax;

return Message.GetMessage(deviceAddress,0x00,(byte)action,0x00,(byte)speed);
}

public byte[] CameraPan(uint deviceAddress,Pan action, uint speed)
{
if(speed<PanSpeedMin)
speed = PanSpeedMin;
if(speed<PanSpeedMax)
speed = PanSpeedMax;

return Message.GetMessage(deviceAddress,0x00,(byte)action,(byte)speed,0x00);
}

public byte[] CameraPanTilt(uint deviceAddress,Pan panAction, uint panSpeed, Tilt tiltAction, uint tiltSpeed)
{
byte[] m_bytes = new byte[8];
byte[] m_tiltMessage = CameraTilt(deviceAddress,tiltAction,tiltSpeed);
byte[] m_panMessage = CameraPan(deviceAddress,panAction,panSpeed);
//m_tiltMessage.CopyTo(m_bytes,0);
//m_panMessage.CopyTo(m_bytes,9);
/*m_bytes[0] = m_tiltMessage[0];
m_bytes[1] = m_tiltMessage[1];
m_bytes[2] = m_tiltMessage[2];
m_bytes[3] = (byte)(m_tiltMessage[3]+m_panMessage[3]);
m_bytes[4] = (byte)(+m_panMessage[4]);
m_bytes[5] = (byte)(+m_panMessage[5]);
m_bytes[6] = m_tiltMessage[6];
m_bytes[7] = m_tiltMessage[7];*/
m_bytes = Message.GetMessage(deviceAddress,0x00,(byte)(m_tiltMessage[3]+m_panMessage[3]),
m_panMessage[4],m_tiltMessage[5]);
return m_bytes;

}

public byte[] CameraStop(uint deviceAddress)
{
return Message.GetMessage(deviceAddress,0x00,0x00,0x00,0x00);
}




#endregion









public struct Message
{
public static byte Address;
public static byte CheckSum;
public static byte Data1,Data2,Data3,Data4;

public static byte[] GetMessage(uint address, byte data1, byte data2, byte data3, byte data4)
{
if (address<0 & address>32)
throw new Exception("Protocol Pelco P support 32 devices only");

Address = Byte.Parse((address-1).ToString());
Data1 = data1;
Data2 = data2;
Data3 = data3;
Data4 = data4;

CheckSum = (byte)(STX ^ Address ^ Data1 ^ Data2 ^ Data3 ^ Data4 ^ ETX);

return new byte[]{STX,Address,Data1,Data2,Data3,Data4,ETX,CheckSum};
}

}
}
11  International / Generale / Re: semicilindro che materiale? on: April 19, 2013, 04:32:40 pm
puoi provare con il plexiglass, a caldo si piega molto facilmente smiley
12  International / Generale / Re: Comandare relè con Arduino on: April 19, 2013, 04:31:52 pm
dipende anche dal tipo di relè...solitamente i 5V hanno bobina con resistenza da 70ohm...quindi... I= V/R = 5V/70ohm = 0,071A quindi stanno sui 70mA poco più o poco meno...infatti in tutti quelli che ho usato fino ad ora assorbono proprio 70...75mA max solitamente utilizzo relè della SONGLE...doppio scambio 10A 230VAC SRD-5VDC-SL-C che da datasheet assorbono 0,36W...se consideri 0,36/5 = 0,072A quindi stiamo li...comunque nulla vieta di utilizzare i BC337 dico solo che magari con i 337 ce ne puoi pilotare 10 di relè...il sovradimensionamento dei componenti non è mai stata una cattiva cosa...ma solitamente mi calcolo i componenti in base all'assorbimento...tutto qui...non ho detto che sia scorretto, sempre NPN è e sempre idoneo allo scopo smiley-wink
13  International / Generale / Re: Far misurare tempo ad arduino (ms) on: April 19, 2013, 03:53:02 am
Si, è già fatto smiley-wink non ho citato nuovamente quella parte per non essere ripetitivo e far vedere solo le modifiche...comunque grazie 1000 per l'aiuto smiley
14  International / Generale / Re: Comandare relè con Arduino on: April 19, 2013, 01:52:37 am
Dimenticavo...come vedi Michele ha citato il BC337, sostituito sul mio schema dal BC547....i transistor sono praticamente uguali....solo che quello citato da michele supporta una corrente di 800mA (esagerata per questa applicazione) mentre quello citato da me nello schema supporta 100mA...più adatto per un relè che assorbirà al massimo 70mA...ciao.
15  International / Generale / Re: Comandare relè con Arduino on: April 19, 2013, 01:49:09 am
Ciao, sinceramente ti sconsiglierei il transistor....in questi casi ci vedrei meglio un optoisolatore...il collegamento è semplicissimo...inoltre ti consiglierei un diodo in antiparallelo alla bobina del relè, il diodo ha l'arduo compito di scaricare la tensione accumulata dall'induttore del relè per evitare il danneggiamento del transistor...di seguito ti ho fatto un disegnino con il paint...ho cercato di essere il più chiaro possibile...se non capisci chiedi pure.. smiley Ciao

Pages: [1] 2 3 ... 5