Atmosphère Interactives, une architecture des sens

Page 1

Nicolas Paolozzi Damien Roche

Atmosphères interactives une architecture des sens

École Nationale Supérieure d’Architecture de Grenoble Master Architecture et Cultures Sensibles de l’Environnement 1


Lundi 18 et Mardi 19 Juin Jury Christian Drevet, architecte, enseignant ENSA de Saint Etienne Jacques Schmitt, Direction du Développement et de l’Aménagement Université

de Grenoble

Nicolas Dubus, architecte, enseignant ENSA de Grenoble Éric Seguin, architecte, enseignant ENSA de Grenoble Catherine Pierre, rédactrice en chef adjointe de la revue AMC Grégoire Chelkoff, architecte, enseignant ENSA de Grenoble Philippe Liveneau, architecte, enseignant ENSA de Grenoble (directeur

d’études)

Yann Blanchi, architecte, enseignante ENSA de Grenoble (représentant de l’UE) Jacques Scrittori, architecte d’intérieur, enseignant associé ENSA de Grenoble (représentant de l’UE)

Magali Paris, ingénieure paysagiste, enseignante associée ENSA de Grenoble (représentant de l’UE)

Encadrement du master ACSE Grégoire Chelkoff, responsable du Master ACSE, architecte, professeur Philippe Liveneau, co-responsable du Master ACSE, architecte, maître-

assistant

Yann Blanchi, architecte, maître-assistante associée Jacques Scrittori, architecte d’intérieur, maître-assistant associé Magali Paris, ingénieure paysage, maître-assistante associée 3


Avant Propos Introduction

7 11

I. Interactivité (Nicolas Paolozzi) 1. Définition, origines et évolution

23

2. Les éléments constituant un système interactif

34

3. Vers un changement de paradigme

37

4. Les impacts sociaux

43

II. Immatérialité : vers une nouvelle approche sensible de l’architecture (Damien Roche) 1. Les composantes immatérielles d’une atmosphère

43

2. Vers une approche sensible de l’espace

45

3. Le rôle de la technique et de la technologie

53

4. Les impacts sur l’architecture

55

III. Expériences sensibles 1. La dimension sensible du climat

60

2. L’expérience sensible lumineuse

71

3. Les cadres d’expérimentations

104

Annexes

117

Bibliographie

5


Avant Propos Notre parcours commun Il y a trois ans, nous avons commencé à nous intéresser au rôle des objets communicants en milieu urbain, à travers le thème « small object, big scale » . Nous avons étudié la place des dispositifs dits « intelligents » qui envahissent de plus en plus nos espaces pour tracer, surveiller, capter, mesurer en temps réels. Cette « intelligence ambiante » ne concerne pas que les machines et les infrastructures : l’habitant, le passant, l’automobiliste, le citoyen sont aussi pris dans les mailles de ce réseau. La problématique commune aux différents projets était la suivante : comment créer des liens entre les individus et l’espace public à partir des nouvelles technologies communicantes, souvent considérées comme socialement inhibitrices. Outre la qualité architecturale, deux facteurs devaient être intégrés au projet. Premièrement, en se posant la question du devenir du projet dans le temps. Aura-t-il réussi à créer de nouvelles relations humaines durables ? Aura-t-on intérêt à la conserver ? Aura-t-elle profondément transformé la perception de la ville et les relations sociales de ses habitants ? Venait ensuite la question de l’échelle. La structure devait interagir avec le territoire, au travers de ses connexions, aux réseaux de mobilité et aux systèmes de communication. Cette approche d’une architecture connectée, nous a interrogés sur l’influence de la donnée numérique, de toute nature soit-elle, sur l’espace urbain.

En parallèle à nos études, nous nous sommes intéressés aux possibilités offertes par l’image et le son pour créer des atmosphères scéniques. À travers diverses installations, nous avons travaillé sur la mise en relation entre la musique et la lumière projetée, en étudiant des moyens pour décoder de l’information sonore afin de la retranscrire visuellement. Ce travail nous a permis de nous pencher sur les notions de programmation, d’interfaces et donc, de communication entre musique et 7


lumière. Nous avons alors pu expérimenter de nouvelles formes d’installations, éphémères, à travers des structures « légères »…

Nos Constats Aujourd’hui la technologie numérique est un domaine en plein développement, repoussant en permanence les limites des possibles. Cette technologie offre de nouveaux outils qui se sont démocratisés et sont devenus de plus en plus accessible. Cela résulte notamment de l’apparition de logiciel open-source, prônant le partage des savoirs et des compétences via une communauté en effervescence. Ainsi, grâce à Internet, on peut facilement trouver une quantité de réflexions, travaux, programmes et applications autour de la technologie numérique, dont les sources sont ouvertes à tous. Libre à chacun, alors, de s’en inspirer, d’en modifier le contenu pour l’adapter à son projet et d’en partager les résultats.

Un point important de notre démarche est la volonté de construire un dispositif interactif rendant possible la création d’ambiances, en se confrontant au processus de mise en œuvre à travers toutes ces étapes. La méthodologie par l’expérimentation nous permet de découvrir de nouvelles possibilités. Elle est aussi un moyen de définir les limites des possibles, par nos limites personnelles mais aussi par des limites budgétaires et logistiques. La mise en œuvre nous permet de contraindre notre pensée à ce que nous sommes capables de faire dans la mesure du « raisonnable ». Le projet construit est un moyen d’explorer les domaines gravitant autour de cette nouvelle forme d’architecture. Enfin, ce projet s’inscrit dans un cadre expérimental, il est donc nécessaire de capitaliser des informations de la part des usagers afin de l’évaluer, de le faire évoluer. Le projet doit être pensé comme un projet itinérant, dans l’optique de renouveler les expérimentations.

Nos Intentions Ce projet de diplôme s’inscrit dans la continuité de nos expérimentations passées. Notre volonté étant de repousser notre savoir-faire en se fixant de nouveaux objectifs technologiques, afin d’en questionner leurs intérêts et leurs applications. Ces expérimentations nous ont confortés dans l’intérêt d’appliquer ce processus à l’échelle de l’architecture. Ainsi notre intention première est de questionner le rôle et les impacts de l’interactivité en architecture et plus particulièrement dans le domaine des ambiances, en s’appuyant sur des composantes immatérielles de l’espace. L’interactivité peut-elle reconfigurer notre approche sensible de l’espace ? Comment l’immatérialité peut générer des espaces de flux dynamiques ?

9


Introduction Avant d’introduire notre réflexion, il est nécessaire de revenir sur la notion d’ « ambiance ». La notion d’ambiance est définie par une expérience sensible remarquable mettant en situation la perception et l’usage de l’espace, en s’appuyant sur la mémoire et l’imaginaire. En architecture, la production d’une ambiance est régie par trois dimensions : physique, sensible et sociale. Chacune de ces conditions intègre différentes composantes, dans un contexte précis.

Les projets décrits dans ce mémoire sont intimement liés à la notion de l’ambiance mais aussi aux notions d’interactivité et d’immatérialité en Architecture. Notre raisonnement sera composé de ces trois parties distinctes. La première partie s’intéressera à la notion d’interactivité, de manière globale puis spécifique à l’architecture, en étudiant ses origines, ses évolutions et ses impacts sur l’architecture et la société. Nous étudierons le rôle des technologies afin de comprendre comment elles participent à un changement de pensée. Dans la seconde partie, nous aborderons la notion d’immatérialité par ses dimensions physiques et sensibles. Comment les mettre en œuvre afin de créer des espaces de flux dynamiques ? Dans la dernière partie, nous explorerons le processus d’expérimentation, de la conception à la mise en œuvre et de son évaluation. Notre vision prospective est nourrie par une approche théorique, technique et sensible. On fait l’hypothèse que les technologies peuvent servir à la création d’une atmosphère à travers des données numériques afin de répondre à la problématique suivante : Comment l’architecture immatérielle et interactive s’inscrit dans une évolution sociale et transformera la pensée architecturale ? 11


I. Interactivité 1. Origines, définition et évolution 1.1 Origines L’architecture interactive s’inscrit dans la continuité du travail théorique sur la cybernétique au début des années 1960. La cybernétique est la science des systèmes auto-régulés, qui ne s’intéresse pas tant aux composants qu’à leurs interactions, et où est pris en compte avant tout leur comportement global. C’est une modélisation de la relation entre les éléments d’un système, par l’étude de l’information et des principes d’interaction. Norbert Wiener (1894-1964) est considéré comme le père fondateur de la cybernétique. Mathématicien américain, théoricien et chercheur en mathématique appliqué, Wienert introduit en science la notion de feedback (rétroaction), notion qui a des implications dans les domaines de l’ingénierie, des contrôles de système, l’informatique, la biologie, la psychologie, la philosophie et l’organisation de la société.

1.2 Définition La notion de rétroaction est intrinsèque à la notion d’interactivité définie comme la coopération de plusieurs êtres ou systèmes, naturels ou artificiels qui agissent en ajustant leur comportement via des processus rétroactifs. La notion d’interactivité s’appuie principalement sur le développement des nouvelles technologies, et des nouveaux systèmes et moyens de communication. L’abondance et la continuelle prolifération de ces systèmes ont transformé les modes de vie et façonné la société moderne. Le développement exponentiel de ces systèmes est donc devenu un enjeu majeur du XXIe siècle. L’interactivité est une notion vaste, et par conséquent nous nous limiterons ici à l’explorer à travers son application dans la dimension 13


architecturale. L’architecture interactive désigne un champ de l’architecture dans laquelle les objets et l’espace ont la capacité de répondre à des besoins changeants, en s’adaptant à l’évolution des demandes individuelles, sociales et environnementales. Cedric Price a peut-être été l’architecte le plus influant, en adoptant les travaux théoriques de la cybernétique pour l’étendre à un concept architectural : «l’architecture d’anticipation». Beaucoup de ses projets non-construits, comme le Fun Palace en 1961, ont influencé une architecture de processus qui était indéterminée, flexible et sensible aux besoins changeants des utilisateurs et aux différentes temporalités. Son projet était le déclencheur de « la première recherche d’une architecture intelligente artificiellement, conçue sans programme spécifique, mais désirant seulement un effet final, sur l’esprit ». Pour que quelque chose soit considérée comme «intelligent» dans ce contexte, le système doit être en mesure d’en apprendre davantage sur son monde et de développer sa propre capacité à interagir avec lui. Bien que ce projet n’ait jamais été construit, son espace flexible a influencé de nombreux architectes, notamment Richard Rogers et Renzo Piano pour la conception du Centre Georges Pompidou à Paris qui reprend et prolonge la pensée de Price.

Cedric Price, Fun palace 1961

Ce n’est qu’à partir des années 90, que l’architecture interactive a commencé à réellement émerger. L’apparition de tels projets sont devenus réalisables grâce aux progrès technologiques et à la réduction des coûts dans ce domaine. Ce fut également à cette époque que la longue histoire de la cinétique dans l’architecture a commencé à être réexaminée; dans l’optique que la performance pourrait être optimisée si l’on pouvait utiliser les données informatiques et leur traitement. Et ainsi permettre de contrôler l’adaptation physique d’une nouvelle manière, pour répondre à la culture contemporaine.

15


1.3 Typologie en architecture La recherche autour de la notion d’interactivité s’est très rapidement démocratisée dans l’art par le multimédia, qui en a fait une sous-catégorie logiquement nommée art multimédia ou art des nouveaux médias. Ce nouveaux domaine en pleine effervescence, apparu en 1990, réinterprète l’art dans sa globalité (danse, scénographie, sculpture, peinture...) en offrant un espace de liberté pour expérimenter et étudier la notion récente qu’est l’interactivité. Ces recherches ne sont pas autant développées dans le domaine architectural mais il est toutefois possible aujourd’hui d’identifier plusieurs types d’architecture interactive : celle qui s’attache à la relation entre l’architecture et son environnement, celle qui s’intéresse aux relations entre l’homme et l’architecture, et enfin celle qui tente de renouer les liens entre l’homme et son environnement.

Nicolas Basic, Orgue Marin Zadar, Croatie, 2005

L’interaction entre architecture et environnement se caractérise par l’utilisation des éléments naturels comme composants du projet. Ainsi, l’orgue marin de l’architecte Nicolas Basic à Zadar en Croatie, utilise le mouvement naturel de la houle, tandis que l’installation Rhapsody de Pierre Thibaut utilise le vent. Ces deux projets ont en commun d’aborder la dimension d’ambiance sonore née de l’interaction entre un dispositif architectural et paysager avec un mouvement naturel. Dans l’Orgue Marin, la musique sort tout droit du mouvement des vagues. Sa structure produit des notes aléatoires et harmoniques au rythme de la houle grâce au refoulement de l’air dans les 35 tuyaux d’orgue placés sous la terrasse en pierre. Pour Rhapsody, le dispositif est constitué de 750 ‘flûtes’, tubes métalliques percés, dans lequel le vent s’infiltre, produisant une mélodie dont le rythme et le ton obéissent à la force et la direction de ce vent. Ces projets interagissent ainsi directement avec leur environnement.

17


À une autre échelle, à travers une installation urbaine pour la fête des lumières à Lyon, le collectif 1024 architecture a tenté de symboliser une interaction entre l’homme et l’espace construit. Ainsi par divers moyens techniques, le collectif avance une personnification de l’architecture pouvant alors imiter et chanter à l’unisson avec le spectateur muni d’un micro. Le support de cette installation est l’architecture du théâtre des Célestins, alors habillé de lumière venant transformer la perception de l’édifice devenu dynamique.

1024 architecture, Perspective lyrique Lyon, France, 2010

David Fisher, Dynamic architecture Dubaï, Emirates arabes unis, 2010

Cette notion de dynamisme a également été le centre d’un concept que David Fisher présente dans son projet Dynamic Architecture, représentatif d’une architecture renouant les liens entre homme et environnement. Il y propose une tour capable de se mouvoir et de se torsader grâce à l’empilement d’unités mobiles indépendantes entre elles, représentant un module d’habitation. Ainsi l’usager peut orienter à sa guise la position de son lieu de vie en fonction de la course du soleil, il devient alors possible d’avoir une pièce toujours ensoleillée tout au long de la journée. L’interaction de l’homme avec son environnement lui permet ainsi d’établir une nouvelle relation avec ce dernier. Aujourd’hui les avancées technologiques ont permis d’affranchir les limites de la communication entre des éléments de natures différentes, l’informatique devenant l’interprète des échanges entre l’homme et son environnement. La notion d’interactivité permet de concevoir des systèmes auto-régulés, en quête de performance par une gestion optimisée . Par extension elle rend possible l’idée de pouvoir gérer entièrement son environnement en cultivant l’imaginaire du tout interactif où l’individu et l’environnement deviennent des éléments de « l’installation », au même titre que les autres éléments qui la composent.

19


1.4 Le rôle des technologies communicantes en lalalarchitecture Exemple : La façade de l’Institut du monde arabe. Dans ses fondements, l’architecture interactive véhicule l’idée, par des technologies communicantes, de constructions plus durables par leurs capacités d’adaptation. Certaines d’entre elles ont déjà montré leur faiblesse comme la façade de l’Institut du monde arabe qui devait initialement s’ouvrir et se fermer en fonction de l’ensoleillement, mais les cellules photoélectriques chargées de piloter le dispositif ont montré des défaillances, si bien que l’ouverture et la fermeture se font désormais à chaque changement d’heure, adoptant ainsi une fonction davantage touristique. Tandis que les projets récents de l’architecture interactive se détachent de cette pensée du durable, pour s‘ orienter vers l’expérimentation sensible, vers ‘l’architecture spectacle’ obéissant aux lois du marketing urbain, ou explorant des figures géométriques inédites en rupture avec les règles ‘standard’ de l’esthétique et de la construction.

Jean Nouvel, Institut du monde arabe

Ces éléments questionnent la place de l’interactivité dans la conception architecturale, toutefois cette notion appliquée à l’architecture reste très récente, et peut encore évoluer, mais elle a déjà démontré sa capacité à rendre l’espace plus flexible, à l’image de son environnement. Cette architecture interactive, « branchée » sur son environnement, ouvre des perspectives prometteuses. Elle annonce l’avènement d’une architecture qui se prêterait à une adaptation aux transformations continues de son milieu, une architecture réactive par rapport au climat, à la lumière, à la pollution, vers une architecture plus responsable et flexible. Alors, on ne demandera plus « Quel est ce bâtiment ? », ou « Comment a t-il été fait ?» , mais plutôt « Que fait ce bâtiment ? », offrant des espaces où les gens interagissent avec l’architecture, qui ne devraient pas être considérés comme des «utilisateurs» mais comme des «participants».

Paris, France, 1987

21


2. Les éléments constituant un système deiinteractif Avant d’aborder le changement de paradigme qu’apporte la notion d’interactivité en architecture, il semble nécessaire d’expliquer les fondements et le fonctionnement de l’interactivité. Celle-ci s’appuie sur 3 éléments : le programme, l’interface et le temps réel.

2.1 Le programme Arduino Uno

En informatique un programme est une séquence d’instructions qui spécifie étape par étape les opérations à effectuer pour obtenir un résultat. Il fait partie d’un processus à 3 étapes : capter de l’information, traiter l’information et émettre une information. Pour être exécuté, un programme nécessite un ensemble de composants, indispensables pour son fonctionnement : un micro-contrôleur qui exécute le programme. une alimentation une horloge, signal rectangulaire permettant une logique séquentielle de la mémoire (Flash et RAM) des périphériques d’entrées/sorties.

Arduino Mega 2560

Arduino est une carte de circuit imprimé parmi tant d’autres, supportant ces composants ainsi que la circuiterie minimum nécessaire pour lui permettre de fonctionner. Elle peut être associée à des cartes d’interface (shield) ainsi qu’à de nombreux logiciels et documentation open source, qui en ont fait le succès. La carte Arduino intègre une interface USB permettant de la programmer avec n’importe quel ordinateur. Ce programme doit être écrit avec un logiciel particulier appelé environnement outil de développement permettant d’entrer les instructions. À l’origine, ces instructions devaient être codées en binaire (0 23


pas de signal et 1 signal) qui a évolué vers de nombreux autres langages comme traduction du langage binaire pour faciliter la programmation. Le code source n’est (presque) jamais utilisable tel quel. Il est généralement écrit dans un langage «de haut niveau», compréhensible pour l’homme, mais pas pour la machine. Le C, C++, java, javascript sont aujourd’hui les langages plus communément utilisés, l’Arduino utilisant un mélange de C et de C++. Le programme correspond à la partie du traitement d’informations qui peuvent être de natures diverses, on détermine essentiellement les données qu’il va traiter (données d’entrée), la méthode employée (appelée l’algorithme), et le résultat (données de sortie). Un algorithme est une suite finie et nonambiguë d’opérations ou d’instructions permettant de résoudre un problème. Plus il y a d’instructions et de conditions, plus la capacité de traitement du programme est élevé. Un programme nécessite également des interfaces avec le monde extérieur pour récupérer les informations à traiter ainsi que pour émettre les informations traitées.

Capture d’écran personnelle du logiciel Arduino

25


2.2 Les interfaces Toute interface est composée d’un ou plusieurs dispositifs électroniques, cependant nous la décomposerons en 2 catégories : Les capteurs : dispositif de captation et d’émission de données L’interface utilisateur : dispositif de contrôle. capteur de proximité

capteur de mouvement

capteur de pression

capteur d’humidité

capteur de luminosité

capteur de mouvement

Les Capteurs : Un capteur est un dispositif transformant l’état d’une grandeur physique observée en une grandeur utilisable, il se distingue de l’instrument de mesure du fait qu’il ne se suffit pas à lui-même car ne disposant pas d’un affichage ou d’un système de stockage des données. Un capteur est un dispositif qui rassemble des informations provenant du monde physique réel telles que lumière, température, pression, présence, etc ou provenant d’autres systèmes informatiques. Les capteurs et leurs conditionneurs peuvent aussi faire l’objet d’une classification par type de sortie : - Capteurs analogiques La sortie est une grandeur électrique dont la valeur est proportionnelle à la grandeur physique mesurée par le capteur. La sortie peut prendre une infinité de valeurs continues. - Capteurs numériques La sortie est une séquence d’états logiques qui, en se suivant, forment un nombre. La sortie peut prendre une infinité de valeurs discrètes.

capteur de proximité à ultrasons

Exemples de capteurs

capteur vidéo

capteur de localisation (GPS)

- Capteurs logiques ou TOR. La sortie est un état logique que l’on note 1 ou 0. La sortie peut prendre ces deux. états. Les évolutions actuelles permettent aux capteurs d’être construits plus petits, moins chers et plus réactifs. Ils sont devenus plus sophistiqués, de la simple technologie de détection 27


de mouvement, ils peuvent aujourd’hui inclure les types les plus avancés de reconnaissance de formes. De part leur taille de plus en plus réduite, il devient facile d’intégrer ces outils de captation directement dans l’architecture, permettant d’obtenir des informations liées à l’édifice afin qu’il puisse s’adapter.

L’interface utilisateur : L’interface utilisateur est un dispositif qui permet la communication et le contrôle des utilisateurs sur la machine. Elle peut être décomposée en 3 catégories : L´interface en ligne de commande, est un dispositif dans lequel l’utilisateur peut saisir des phrases correspondant aux opérations à effectuer. L´interface web est une interface graphique d’une application Web. Elle se manipule à l’aide d’un navigateur Web. Elle est visualisable à partir de n’importe quel ordinateur et est aussi potentiellement accessible du monde entier grâce à Internet. L´interface graphique est un dispositif dans lequel les objets à manipuler sont présentés sous forme de pictogrammes sur lesquels l’usager peut imiter des manipulations physiques.

Oscilloscoop, Application Ipad

L’un des buts de l’interface graphique est de donner des outils et des éléments pour mettre en forme au mieux l’information, et ainsi permettre à l’utilisateur d’interagir de manière plus humaine et plus efficace avec la machine. Aujourd’hui, ce type d’interface se démocratise et s’invite dans notre vie au quotidien. Cette interface intégre un processus de conception de la représentation de l’information, devenant tout aussi important que l’information elle même. Son objectif étant d’appréhender les informations et la logique d’un programme de manière toujours plus intuitive et logique pour l’homme et ainsi l’absoudre de manuel d’utilisation d’un programme. L’interface graphique s’appuie sur l’usage des 29


couleurs, la typographie, la présentation et la signification des logos et des icônes, la présentation et emplacement des fenêtres, la forme et comportement des widgets (bouton, ascenseur, liste déroulante, etc.) et les formes du curseur. L’ergonomie de l’interface s’adapte au support. Ainsi on ne pensera pas l’interface de la même manière si l’on utilise une surface tactile ou une interface commandée (UI)

Quartz Composer, logiciel Apple

Quartz Composer est un langage de programmation visuel parmi d’autres (Max MSP, pure data, processing, open frameworks,...) spécialisé dans le traitement et le rendu de données graphiques. Il met directement en lien dans son environnement de programmation, programme et interface graphique. Quartz Composer utilise le langage OpenGL, Core Image, Core Video, JavaScript, « caché » derrière des boîtes de traitement à connecter pour réaliser le programme, ce dernier étant couplé à une fenêtre de visualisation correspondant à l’interface graphique. Quartz Composer permet la réalisation d’application interactive en temps réel.

MAX MSP, logiciel développé par l’IRCAM 31


2.3 La notion de temps « réel »

Réalité augmentée sur terminal nomade, Application Iphone

En informatique industrielle, on parle d’un système temps réel lorsque ce système informatique contrôle (ou pilote) un procédé physique à une vitesse adaptée à l’évolution du procédé contrôlé. Les systèmes informatiques temps réel se différencient des autres systèmes informatiques par la prise en compte de contraintes temporelles dont le respect est aussi important que l’exactitude du résultat, autrement dit le système ne doit pas simplement délivrer des résultats exacts, il doit les délivrer dans des délais imposés. Les systèmes informatiques temps réel sont aujourd’hui présents dans de nombreux secteurs d’activités : dans l’industrie de production par exemple, au travers des systèmes de contrôle de procédé (usines, centrales nucléaires), dans les salles de marché au travers du traitement des données boursières en « temps réel », dans l’aéronautique au travers des systèmes de pilotage embarqués (avions, satellites), ou encore dans le secteur de la nouvelle économie au travers du besoin, toujours croissant, du traitement et de l’acheminement de l’information (vidéo, données, pilotage à distance, réalité virtuelle, etc.). Le temps réel permet à un individu de visualiser l’information dans un temps qui est vécu par son système de perception, sans décalage avec l’action initiale. Dans les premiers temps de l’informatique, le temps nécessaire au calcul ne permettait pas un affichage en temps «réel». C’est à partir du moment où celuici a été possible que l’interactivité telle que nous la connaissons aujourd’hui a pu se développer. Le temps réel n’est rien d’autre que le fait que la visualisation, ou l’actualisation pour être plus général, de l’information se fait dans un temps qui est vécu par notre système de perception comme sans décalage par rapport à l’action initiale. Autrement dit, la notion de temps réel est humaine. Elle est celle du temps de notre perception et non celui du «temps machine» en soi. Cette notion de temps réel est inhérente à la notion d’interactivité. Ceci était particulièrement vrai dans les premières œuvres interactives et le reste encore largement aujourd’hui. Néanmoins, un temps différé apparaît dans certaines œuvres interactives. 33


3. Vers un changement de paradigme Les réseaux numériques sont de plus en plus intégrés dans le monde urbain et ils révolutionnent la manière d’être ensemble, la gouvernance et le management urbains. Ils conditionnent de plus en plus l’accès aux services et ressources de la ville. Malgré cette profusion, on doit admettre que la montée en puissance des réseaux numériques et les flux de communication qu’ils induisent n’ont que très peu affecté, jusqu’ici, la forme physique de la ville. Cependant l’ère informatique à travers les notions de programmation, d’interface et la notion de temps réel, apporte de nouveaux outils qui requestionnent les fondements de l’architecture. Ainsi les notions de temporalité, d’expérience sensible, de relation à environnement et d’usages sont bouleversées, tendant vers un nouveau paradigme de l’architecture.

3.1 Dynamisme et temporalité La notion de temps réel est sans doute un point majeur de ce changement de paradigme, elle bouleverse la notion de temporalité dans l’architecture, y introduisant la notion d’instantané. Cette notion d’instantané, d’immédiat, transforme l’attitude de l’architecture dans le temps, passant d’un système évolutif à un système dynamique. Ce paradigme induit un comportement qui assimile alors l’architecture à un être vivant capable de s’adapter à un contexte et à une situation particulière. Cette propriété implique que l’architecture est désormais un organisme mutant qui interagit avec son milieu faisant entrer l’architecture dans un nouveau système relationnel avec son environnement.

3.2 La mise en réseau Ce paradigme assimile l’architecture à un composant d’un réseau, au même titre que l’individu et l’environnement. Dans ce contexte, le bâtiment n’occupe plus seulement un site physique. Il est relié à un réseau virtuel de fonctionnalités que l’architecte doit prendre en compte, la notion d’interactivité devenant intrinsèque au paradigme architectural. L’architecture apparaît alors comme un ensemble déconstruit, un agglomérat de modules interactifs connectés, qui repense les relations homme architecture environnement.

3.3 Une nouvelle expérience de l’espace Cette nouvelle relation n’est pas sans conséquence sur la manière d’appréhender et d’expérimenter l’espace. Un nouveau rapport s’établit entre l’individu et son environnement désormais assimilable à un écosystème hybride mixant réalité matérielle et données virtuelles. Ce rapport s’appuie sur une interface capable de communiquer avec nos sens à travers des dispositifs sensibles autorisant des interactions inédites entre l’individu et son environnement. Une manière d’expérimenter l’espace à travers laquelle l’individu et son environnement apprennent d’avantage l’un de l’autre.

3.4 De la fonction à la capacité Un édifice était généralement conçu et qualifié selon les fonctions qu’il devait accueillir et abriter. Comment le concevoir désormais et quels aspects revêtira-t-il demain lorsque ces fonctions ou activités seront dématérialisées ? Comment imaginer des bâtiments fonctionnant en réseau dans un partage de tâches et d’activités physiques et virtuelles ? Dans ce cas, l’architecture n’est pas - ou n’est plus - une forme construite et magistrale destinée à marquer son temps et son 35


milieu mais un service susceptible d’être ponctuel et temporaire, dans un contexte particulier, adapté aux usages et aux besoins des usagers. Marcos Novak, architecte et théoricien de l’architecture numérique, utilise le terme d’intelligence ‘transactive’, pour définir l’intelligence architecturale qui non seulement interagit, mais qui est capable de traiter et transformer à la fois l’utilisateur et elle-même.

4. Les impacts sociaux 4.1 L’attachement à l’espace L’un des objectifs de l’architecture interactive, est de proposer un nouveau rapport entre l’homme et son environnement construit, dans lequel l’usager est pris en compte et peut être compositeur de l’espace. Cette relation s’appuie sur la modification du comportement de l’architecture en fonction de la modification comportementale de l’usager, et inversement, afin de créer une vrai dimension communicante entre l’homme et son espace. Höweler + Yoon Architecture, White noise / White Light Athènes, Grèce 2004

White Noise / White Light est l’une des neuf installations interactives commandée et installée pour les Jeux Olympiques d’Athènes en 2004, avec comme programme «Écoutez Athènes ». Le projet est d’insérer un paysage « lumino-sonore » urbain et interactif au sein d’une place publique pour créer un champ de flux constants chorégraphiés par le public. L’installation est composée de fibres optiques semi-flexibles disposées sur une grille, chacune réagissant en fonction de la proximité du passant, générant une lumière et un son blanc, plus ou moins intense selon la proximité du corps. « Le comportement des participants se modifie au fur et à mesure qu’ils comprennent la logique de l’espace. Enfants et adultes commencent alors une chorégraphie tapageuse jouant avec ce nouvel espace urbain qui remet en question les patrons de comportements habituels. » (Évènements architecturaux, de Jacob Krauek,édition LINKS, 2010) 37


4.2 Vers une interactivité sociale Un espace interactif, transformé par ses usagers, favorise l’apparition d’une « interactivité sociale ». Les usagers entrent alors dans un système collaboratif de fabrication et de modification de leur milieu dans lequel ils peuvent s’associer pour configurer leur espace et son ambiance. Cette notion d’interactivité sociale recouvre trois formes de participations : Superscript, Light Invaders Lyon, France, 2009

La première forme de participation est l’alimentation en informations. Light Invaders est un projet réalise par l’agence Superscript. Ce projet est en ligne et permet aux internautes de composer des séquences animées selon une grille définie. Ces animations sont ensuite récupérées et mixées en live selon différents paramètres d’interactivité, comme la réaction directe au son, le contrôle des couleurs, la transformation des formes, les transitions, la répartition et la vitesse. La possibilité de reconfigurer l’information correspond à la deuxième forme de participation. Soundblox est un projet de Bodo Lensch, Till Bovermann et René Tünnermann. Ce projet est une installation interactive développée au Animax, en coopération avec le Groupe Intelligence Ambiante de la CITEC. L’installation offre la possibilité au public de déclencher des boucles sonores via des caisses de 60 cm disposées dans un espace de 6x6m. Soundblox se comporte comme séquenceur, où chaque cube déclenche une boucle sonore, en fonction de leurs positions et de leurs orientations.

Bodo Lensch, Till Bovermann, René Tünnerman, Soundblox

Et enfin la dernière forme participative se retrouve dans l’analyse de l’information. Le thème des objets communicants nous a amené à aborder la notion de communication entre machines, sans interaction humaine nécessaire: la technologie M2M (machine to machine). Cette technologie est utilisée afin de créer un reflet de la ville de Grenoble, une nouvelle approche offrant aux citoyens un recul 39


sur leur qualité de vie en ville (problématiques des conditions environnementales). Le projet joue alors le rôle d’indicateur de données environnementales et devient à long temre un enjeu citoyen basé sur l’écologie urbaine. Etant informés de leurs conditions de vie au quotidien, les Grenoblois sont alors invités à participer à cette expérience de six mois, relevant le défi d’une prise de conscience et d’une volonté d’agir sur leurs conditions de vie. Les diverses données captées sont retranscrites sous forme de sons, lumières et mouvements à travers une architecture paramétrique et réactive. Sont traités la qualité de l’air, le trafic et les flux routiers, l’ambiance sonore ainsi que le niveau de consommation énergétique. L’installation devient alors un objet communicant urbain invitant la population Grenobloise par l’information à relever le défi lancé.

Caroline Charvier et Nicolas Paolozzi, M2M Land (projet de 3ème année, ENSAG) Grenoble, France 2008

Cette notion de participation et de collaboration n’est possible que par la conservation d’un espace de liberté. Par l’intermédiaire d’une forme de contrôle dans le système interactif, laissant le choix à l’usager de participer ou non. Sans forme de contrôle, la participation à l’élaboration d’une œuvre commune est impossible car dans ce cas notre participation est indépendante de notre volonté. Ainsi la notion de conservation d’espace de liberté semble fondamentale dans la pratique d’espace interactif, considérant davantage ces espaces comme des outils d’expérimentation sensible plutôt que des systèmes intrusifs.

41


II. L’immatérialité :

vers une nouvelle ttttapproche sensible de l’architecture 1. Composantes atmosphère

immatérielles

d’une

1.1 Atmosphère : définition Une atmosphère se définit par la relation entre l’espace et l’usager, par la perception et donc par l’interprétation du corps des phénomènes matériels et immatériels qui l’entourent. Ainsi, l’atmosphère prend en compte la perception en faisant référence aux différentes expériences personnelles vécues. L’environnement ne suffit pas à créer une impression, mais l’humeur, les sentiments, toute l’histoire de la personne conditionnent son ressenti. Cette pensée, développée par Peter Zumthor dans son livre « Atmosphères » est articulée autour de douze idées essentielles pour créer une atmosphère. Selon lui, la création d’ambiance architecturale induit une attention particulière aux choix des matériaux, des formes, des textures, mais aussi aux phénomènes impalpables de l’espace que sont la lumière, l’air et les bruits. L’immatérialité, dans le champ de l’architecture, se définit comme l’ensemble de ces flux en mouvement. Nous nous intéressons aux rôles de ces flux sur notre perception de l’espace à travers les dimensions lumineuses et climatiques.

1.2 L’apparition l’architecture

de

sciences

appliquées

à

Depuis la théorie d’Aristote et jusqu’au début du 18e siècle, le vide est resté un élément unique et indivisible : celui de l’air. C’est à partir du milieu du 18e siècle, et notamment grâce aux recherches de Louis Pasteur, que l’air fut reconsidéré comme 43


un fluide composé de différents gaz. Aujourd’hui encore, on continue à explorer les composantes du vide et à y découvrir de nouvelles propriétés, électromagnétiques, électriques… Cette ignorance de la réalité physique du vide explique certainement sa longue absence dans le champ de l’architecture. Ce nouveau langage architectural a donc permis de reconsidérer les qualités et les critères d’un espace, que ce soit par la température de l’air, le rayonnement des parois, la vitesse de l’air dans cet espace, le taux d’humidité, par l’intensité lumineuse et sa composition chimique. La reconsidération et les recherches sur ce qui compose un vide a donc donné naissance à des approches technique et scientifique des ambiances reposant sur des savoirs et des savoir-faire spécifiques. Aujourd’hui, les sciences appliquées à l’architecture étudient l’espace en le qualifiant par ses caractéristiques acoustiques, thermiques, lumineuses, aérauliques.

2. Vers une approche sensible 2.1 Approche sensible par l’étude des flux En parallèle à cette approche technique, le langage de l’architecture s’est aussi développé par une approche sensible : l’espace comme atmosphère. Le travail sur l’atmosphère est entré récemment dans le champ de l’architecture. Appartenant à la catégorie délaissée de l’immatériel, de l’impalpable, il a longtemps été écarté du langage architectural. Le vide, comme le plein, est donc un sujet de l’architecture, et la mission de l’architecture est de définir ce creux qu’est l’espace.

Olafur Eliasson, Your Atmospheric Colour Atlas Gallery Kyoanagi, Tokyo, 2009

Notre approche de l’immatérialité se base dans un premier temps sur un point de vue physiologique. Par convention, on associe le corps humain à cinq sens : la vue, le toucher, l’odorat, l’ouïe et le goût. Ils sont impliqués au quotidien dans notre appréhension de l’espace : ils nous permettent de comprendre le monde qui 45


nous entoure et adaptent notre comportement par rapport aux différents contextes et aux situations vécues. L’architecture comme construction d’atmosphères engage des relations physiologiques entre l’habitant et l’espace. À l’échelle de l’espace et donc de l’architecture, d’autres sens sont mis à contribution dans notre perception de ces flux. Il convient alors de s’intéresser à leurs effets sur le corps, à leurs impacts physiologiques et psychologiques (cf. fiches annexes relatives au projet de PFE). « Penser l’architecture en terme de climat signifie se projeter dans une autre spatialité, un rapport sensuel à l’espace, habiter l’espace intérieur comme une atmosphère, avec ses diversités de climats, ses variations météorologiques et des gradients. L’architecture doit construire des échanges sensuels entre le corps et l’espace, les sens, la peau, la respiration et le climat, la température, les variations d’humidité et de lumière (...) Travailler sur le vide, sur l’air et ses mouvements, sur les phénomènes de conductions, de transpiration, de convection comme nouveaux paradigmes de l’architecture contemporaine . » Philippe Rahm, Architecture météorologique, Archibook

Anthony McCall, Between You And I Gallery Serpentine, Londres, 2006

Pour Philippe Rahm, l’espace n’est pas considéré comme un volume à remplir, agencer, cloisonner, quel que soit le site ou le programme. Il est un matériau dont les composants sont invisibles. L’espace est certes un volume à trois dimensions, régi par un système de mesure métrique. Mais pas seulement. Il contient des éléments relatifs à la biologie, la météorologie, avec lesquels l’architecture peut et doit compter. Ces éléments sont l’air, la lumière, pensés selon la combinaison des particules de tous ordres qui les déterminent. Rahm raisonne l’architecture à partir des notions d’énergie, de molécules, de climat ou de champs électromagnétiques. C’est l’interaction de ces données, leurs reconfigurations et échanges constants qui servent ses concepts architecturaux.

47


Les flux étudiés par Rahm s’inscrivent dans différentes temporalités, ils peuvent être, ou ne pas être perçus. Cela introduit l’idée d’espace de flux dynamiques. Des flux en mouvement qui reconfigurent l’espace perpétuellement. Par leur immatérialité, ils réinterrogent aussi la notion de frontière. Éléments volatils, en suspension, se dispersant, se cognant dans l’espace, ils obligent à reconsidérer la limite, passant de la frontière physique à la frontière sensorielle ; d’une limite fixe à une limite floue. Pour son projet de musée à Wroclaw en Pologne, Rahm propose la mise en place d’un climat variable en mouvement. Il s’oppose ainsi à ce qu’il définit comme le climat intérieur de la modernité, normalise, conditionne et homogénéise toute l’année pièce par pièce à la température exacte. Le concept de son projet se divise en deux étapes. En premier lieu, il souhaite installer deux sources de chaleur dans un espace vide. Ces pôles de production de chaleur, sortes de radiateurs, sont disposés sur la parcelle de façon diamétralement opposé en coupe et en plan. Le premier situé au sol émet une chaleur de 22° C, le second émet une chaleur de 16° C. Ces températures fixent les limites basse et haute des températures requises dans le programme d’un musée (16°C pour le stockage et les locaux peu utilisés, 22°C pour les espaces de bureaux). Ainsi, par ses propriétés physiques, l’air chaud émis par la première source de chaleur s’élèvera dans l’espace. Lorsqu’il rencontrera la seconde source de chaleur, cet air se refroidira et redescendra. Par ce déséquilibre thermodynamique naît une atmosphère composée de micro-climats, de flux de chaleur oscillants entre 16 et 22°C.

Philippe Rahm, Convective Museum Wroclow, Pologne, Projet non réalisé

La deuxième étape consiste à modéliser ce climat. Par l’étude thermique de ces flux, l’architecte cartographie en plan et en coupe les zones de températures. Ainsi il place le programme en adéquation avec les usages. Afin de ne pas gêner le mouvement des flux de chaleur, les volumes sont ajourés, les planchers et les plafonds sont en caillebotis, 49


spécialement dessinés avec un rapport plein/vide variant en fonction des nécessités du programme. A travers ce projet, Philippe Rahm propose une architecture dynamique du climat pensé par la relation entre la physique des flux et la physiologie des corps. Il réinvente le processus de création de la forme et de l’usage en inversant l’ordre traditionnel entre forme et climatisation.

2.2 Flux et émotions Qualifier le vide, c’est être capable d’en parler d’un point de vue pragmatique, scientifique (de quoi est constitué un vide), mais aussi d’un point de vue plus subjectif, propre à chacun, par notre ressenti. L’immatérialité comme sensation, matérialité de l’esprit, génératrice d’atmosphères et composante de l’espace. Ces sensations ou perceptions sensibles sont vecteurs d’émotions et contribuent à l’expérience émotionnelle de l’espace. James Turrell, artiste américain, utilise la lumière comme matériau afin de travailler le médium de la perception. Ce que donne à voir les œuvres de Turrell, c’est le phénomène de notre propre perception. Le sujet est la perception elle-même. Par ces œuvres, il invite à un matérialisme spirituel, en donnant au corps la possibilité d’expérimenter sensuellement la dimension immatérielle de la lumière et de l’espace. Cette nouvelle perception de la lumière s’inscrit dans la continuité d’Yves Klein et des nouveaux réalistes. Ses monochromes ne sont pas des peintures, mais des surfaces de pure sensibilité.

James Turrell, The Wolfsburg Project Kunstmuseum, Allemagne, 2009

Turrell utilise la technique comme un moyen d’aller plus loin dans l’exploration de nos perceptions. C’est ce que Guy Tortosa, historien d’art et spécialiste des relations entre arts plastiques, architecture et paysage, définit par le terme d’architecture pour la perception. Le principe de mise en œuvre de ses productions est semblable à celui de la « camera oscura » de Léonard de Vinci ou celui de la « caverne » de Platon qui permettent d’opérer un

Photo : Florian Holzherr

51


renversement de la vision. On tourne le dos à la réalité et on observe ce qui se réfléchit sur la paroi : c’est la perception. Ainsi Turrell accorde une importance capitale au fait de ne pas montrer les dispositifs techniques d’où proviennent la lumière. Les dispositifs techniques, artificialisant des phénomènes naturels ont un rôle majeur dans la mise en œuvre des installations de Turrell. À l’échelle de l’architecture, ils ont historiquement contribué à l’évolution de la manière de concevoir un projet.

3. Le rôle de la technique et de la technologie

Reyner Banham, Anatomy of a dwelling

Magazine Art in America #2, A Home is not a House Londres, 1965 Dessin : François Dallegrett

En 1965, Reyner Banham écrit : « Si une maison contient tant de tuyaux, de gaines, de conduits, de fils, de lampes, de branchements, de fours, d’éviers, de vide-ordures, de baffles, d’antennes, de canalisations, de freezers, de radiateurs – tant de services que l’ensemble de ces appareils pourrait tenir debout sans prendre appui sur elle -, alors à quoi sert la maison ? Si le prix de tous ces appareils représente la moitié du prix de revient total (ou plus, comme il arrive souvent), quelle est la fonction de la maison, mis à part de cacher pudiquement à la vue des passants nos organes mécaniques? » La maison est donc devenue « l’a-maison » : une habitation sans murs, sans portes ni fenêtres, une simple toiture abritant un noyau technique sophistiqué capable de maintenir une ambiance confortable en diffusant par irradiation la chaleur, le froid et la lumière, en interaction plus ou moins directe avec le froid, la chaleur et la lumière du dehors. Reyner Banham, théoricien des mégastructures, critique ainsi l’habitat américain qu’il qualifie de « coquille creuse » ne les protégeant pas assez du froid et de la chaleur, conduisant alors à « pomper plus de chaleur, de lumière et d’énergies dans leurs demeures que le font les autres peuples ». Il propose donc de développer une machinerie environnementale, une maison réduite à un immense réseau de tuyaux et de câbles, de la fosse septique jusqu’à l’antenne de télévision. Ce réseau est décrit comme un « ensemble baroque de gadgets domestiques 53


», qui pourrait prendre le dessus sur le foyer si ces services mécaniques continuaient à s’accumuler. L’habitat rejoint ici la dimension environnementale de l’espace défendu alors par Reyner Banham pour qui l’architecture devait « disparaître dans la technologie environnementale » (The Architecture of the Well-Tempered Environment, 1969). Les théories de Reyner Banham inspirent aujourd’hui les recherches de nombreux architectes sur l’interaction entre l’architecture et son environnement à travers les technologies numériques, sur le rôle déterminant que joue la technique dans le développement de l’architecture moderne.

4. Impacts sur l’architecture L’artificialisation des éléments de nature non-matérielle par divers dispositifs techniques ont bouleversé l’architecture. Ainsi l’organisation spatiale et fonctionnelle d’un bâtiment s’est modifiée, en évoluant avec les avancées technologiques. Ces nouvelles technologies entraînent un renouvellement typologique par l’abandon de formes devenues inadéquates. Le mode de chauffage illustre cette évolution. Autrefois, le chauffage naturel, unique et ponctuel (poêle ou cheminée) servait à la fois de chauffage et de lieu de cuisson quand sa fumée n’était pas en plus utilisée au fumage pour la conservation des viandes. L’activité du foyer organisait alors l’espace de façon thermique, en fonction de la diffusion rayonnante des températures dans l’air. Jusqu’au début de 20e siècle, les familles passaient leurs soirées d’hiver regroupées autour du foyer de chauffage. Aujourd’hui la veillée a disparu de notre mode de vie. L’apparition du chauffage central a rendu possible la séparation spatiale des activités autrefois regroupées. Un autre exemple de l’influence des avancées techniques sur nos 55


modes de vie est l’apparition de l’électricité. L’apparition de l’éclairage public au 19e siècle a revolutionnée la perception de la ville, elle a engendrée l’idée de noctambulisme, une ville qui devient alors pratiquable la nuit. L’apparition de l’éclairage public a donné lieu à de nouvelles typologies urbaines comme celle du boulevard, lieu de flâneries, de divertissements nocturnes Aujourd’hui cette conquête de l’espace de la nuit est quasiment achevée. L’électricité a rendu possible la diffusion d’informations en continu, le fonctionnement des services 24 heures sur 24. Elle a fait disparaître l’alternance jour et nuit, ce que Philippe Rahm appelle le jour continu, une absence de rythme naturel dans laquelle on vit, par la globalisation, par internet, par les modes de vie font que les cadences saisonnières, ou celle du jour et de la nuit tendent à disparaître.

Néanmoins, à travers les projets que nous allons vous présenter, nous adoptons une réflexion inverse. Comment partir à la quête d’une nouvelle expérience sensible de l’ espace en s’appuyant sur les technologies. La technologie comme un moyen, non une fin subie, dont les effets sensibles ne sont pas pensés et étudiés en amont. Par extrapolation, on pourrait imaginer une nouvelle forme de pensée technologique pour l’architecture, répondant à de nouvelles attentes sensibles. Comment des dispositifs techniques et technologiques peuvent nous aider à mieux vivre nos espaces quotidiens et engendrer de nouvelles formes de liens sociaux ?

On constate donc qu’historiquement, l’introduction de nouvelles techniques modifie les modes de vie. Comme nous l’avons vu avec le travail de James Turrell, les avancées techniques et technologiques permettent de générer de nouvelles ambiances qui modifient notre appréhension de l’espace et permettent d’aller plus loin dans l’exploration de nos perceptions. Reyner Banham révèle l’importance de la place occupée par la technologie dans l’habitat contemporain qui conditionne notre approche sensible de l’espace. Ainsi, les approches sensibles et techniques deviennent de plus en plus étroitement liées. Elles sont fondamentales à l’appréhension de l’espace que nous pratiquons et par conséquent inhérentes à la pensée architecturale.

57


III. Expériences sensibles

Le thème des expériences sensibles est au coeur de notre travail de cette année. Il propose une nouvelle approche et appréhension de l’espace en s’appuyant sur la notion d’interactivité et d’immatérialité en architecture. Cette recherche repose sur une démarche expérimentale et empirique ne cherchant pas «l’opposition» avec la pensée architecturale telle que nous la connaissons, mais plutôt souhaitant explorer son devenir et son évolution possible par rapport aux avancées techniques et technologiques. Ainsi, les projets présentés utilisent divers moyens techniques pour proposer une nouvelle expérience de l’espace, dé-matérialisé, évolutif et communicant. Cette approche souhaite re-questionner la notion de limite et de temporalité, fondamentales de l’architecture, et par conséquent re-questionner la pensée architecturale. Notre étude des expériences sensibles est composée de deux projets: Le premier utilise le climat et ses caractéristiques afin de générer des espaces pensés comme des atmosphères interactives. Le second, quant à lui, reprend le concept du projet climatique en s’attachant davantage au protocole d’expérimentation qui cadre le projet, ainsi qu’à sa mise en oeuvre.

59


1. Projet climatique 1.1 Intentions

1

1. S’intéresser au climat, élément immatériel de l’architecture.

2

2. Passer d’un espace figé, à un espace de flux dynamiques. 3. Proposer une expérience sensible en jouant sur la temporalité des éléments climatiques. 4. Mettre en œuvre un dispositif sans frontières et sans échelles.

3

4

61


1.2 Concept

Physiologie

Ce projet est pensé comme un dispositif technique qui vise à instaurer une nouvelle relation entre l’individu, le lieu et son environnement.

Technique Comportement

Environnement

Ce dispositif utilise la spatialité pour mettre en place cette relation. En fonction de sa disposition dans l’espace ainsi que de la position des usagers, celui-ci va générer un climat particulier. Par le déplacement des modules du dispositif, les usagers peuvent aménager des espaces climatiques. Le lieu n’est alors plus considéré comme un même et unique espace, mais comme une atmosphère interactive composée de micro-climats en mouvement. Les climats générés ont alors un impact direct sur l’environnement et la physiologie des usagers (cf fiche physiologie climat en annexe), qui après avoir pris conscience du fonctionnement du système adoptent de nouveaux comportements dans cette nouvelle expérience sensible de l’espace.

63


1.3 Projet

1

1. Utiliser quatre éléments composants le climat : L’ensoleillement, les précipitions, la chaleur et le vent. 2. Intégrer chacun des éléments climatiques dans un module agissant comme un diffuseur.

2 3. Faire interagir chaque module à la proximité d’un corps (usager et autre module).

4. Permettre de reconfigurer les modules dans l’espace.

3

4

65


1.4 Technique D’un point de vue extérieur, les modules sont identiques et ne permettent pas de connaître la nature de l’élément qu’ils diffusent. Ils prennent la forme de monolithes disséminés dans l’espace, invitant les usagers à se laisser surprendre par des événements climatiques durant leurs parcours dans l’installation. 1. À l’image d’une brique, chaque module à une proportion qui lui permet d’adopter 3 positions possible dans l’espace. -Dimensions : 1,93 x 1,03 x 0,55 m. 2. Le module est pensé comme un filtre permettant de diffuser l’élément climatique qu’il accueille sans que le dispositif émetteur ne soit perceptible de l’extérieur. Le filtre est composé de tasseaux de bois sur quatre faces du module. Ceux-ci sont reliés par quatre tiges filetées et contreventés par deux panneaux latéraux en bois.

1

2

3

4

- Dimensions tasseaux: 27 x 70 mm 38 tasseaux h = 1,93 m 36 tasseaux h = 0,55 m Coût : 360 € TTC (Machot bois) - Dimensions tiges filetées : 1 m / diamètre 16 mm Écrous + rondelles : diamètre 16 mm Coût : 10,9 € TTC (SMG) - Dimensions panneaux : 1,93 x 0,55 m / ép 1cm Coût : 25 € TTC (Castorama) 3. Une paroi coulissante en bois est située à l’intérieur du module afin d’accueillir divers dispositifs techniques. -Dimensions plaque : 1,88 x 0,99 m / ép 1 cm Coût : 25 € TTC (Castorama) 4. Coût total de l’enveloppe : 420,9 € TTC 67


Le module agit de le manière suivante : plus un corps est proche de lui, plus l’élément climatique artificialisé qu’il va émettre (lumière, chaleur, vent ou brume) sera intense. Ainsi l’usager peut par sa position ou par la manière dont il agence les modules, composer son ambiance climatique. Chaque module intègre 3 dispositifs lui permettant d’émettre un élément climatique réagissant avec son environnement.

3 1

A

2

B

1. Un télémètre à ultrasons DYP-ME007V2 - Dimensions : 45 x 20 x 15 mm Portée : 2 cm à 500 cm Champ de captation 30 ° Coût : 20 € TTC (Snootlab) 2. Une interface de commande : micro-contrôleur - Arduino Uno Coût : 25 € TTC (Semageek) 3. Un dispositif émetteur: A. Machine à brouillard Coût : env. 200 €

C

D

B. Tube LED x 4 Coût : env. 280 € C. Brasseur d’air haute vélocité Coût : env. 150 € D. Lampe Infrarouge x 4 Coût : env. 280 €

69


71


2. Projet Lumineux 2.1 Protocole

intense apaisant

envoutant

1

douce ennuyeux

douce

relaxant

vaporeux agressif

stressant

froid

2

3

4

5

accueillant

Ce projet de fin d’étude s’appuie sur une démarche expérimentale. Son objectif est de proposer une expérience sensible qui utilise le matériau lumière et qui s’articule autour de la notion d’interactivité. Ainsi, nous mettons en oeuvre un projet qui vise d’une part à proposer une nouvelle expérience de l’espace, mais aussi à récolter des données sensibles auprès des usagers. Ce projet se veut itinérant, son objectif étant de collecter des informations dans différents lieux et contextes. L’expérience proposée se base sur un protocole instrumental itératif et récursif. 1. Un dispositif technique génère une ambiance lumineuse dans un contexte donné. 2. Nous offrons alors aux usagers la possibilité de qualifier cette ambiance par les mots. 3. À chaque fois qu’une personne qualifie l’ambiance, le dispositif se reconfigure et propose une nouvelle ambiance lumineuse. 4. Toutes les données sont ainsi stockées en étant associées au mode lumineux correspondant, mais aussi à d’autres données relatives au contexte (température, niveau sonore, date, lieu, configuration dans laquelle se trouve le dispositif) 5. Ainsi nous récoltons et recoupons des données physiques et sensibles afin de les analyser. Grâce à ce dispositif technique et technologique, nous reinterrogeons la notion de frontière et de temporalité en architecture. L’espace comme un ensemble de flux dynamiques dont les limites sont non plus perçus de manière physique, mais sensible. Cette nouvelle approche de l’espace induit une nouvelle relation entre individu, architecture et environnement. 73


Ce projet n’est pas pensé comme une structure unique, mais comme des éléments architecturaux modulaires. Ainsi la modularité permet d’adapter la mise en oeuvre de l’expérience en fonction des divers contextes. Elle permet de mettre en place des structures éphémères, voyageant dans différents lieux, en adoptant des configurations spatiales singulièrement différentes. Ainsi, nous proposons trois manières de parcourir l’espace à travers trois types de configurations du dispositif :

1. Immersion 2. Franchissement 3. Contemplation

75


2.2 Technique La mise en oeuvre de cette expérience sensible s’appuie sur des moyens techniques et technologiques. Un nouveau rapport s’établit entre l’individu et son environnement désormais assimilable à un écosystème hybride mixant réalité matérielle et données virtuelles.

1

Ainsi, le schéma ci-contre illustre le fonctionnement du projet par les liens entre les dispositifs techniques.

1. Le dispositif lumineux : structure filaire intégrant des LED. Il permet de reconfigurer l’ambiance lumineuse. 2

3

4

2. Le micro-controlleur : il est le cerveau du dispositif lumineux. Sa mémoire interne contient le programme permettant de configurer l’état des 1550 LED. 3. L’ordinateur : il établit la liaison entre le micro-controlleur et la plateforme internet. Il capte les informations de la carte arduino et en envoie la synthèse sur le serveur web. De plus il commande le micro-controlleur en lui envoyant des commandes séries permettant au dispositif lumineux de se reconfigurer. 4. La plateforme internet : elle permet de regrouper et de stocker toutes les données numériques. 5. Le terminal nomade : il donne la possibilité aux usagers de faire part de leurs impressions sous forme de mots.

5 77


Ce schéma illustre l’acheminement des informations. Les informations récoltées sont à la fois de nature numérique et analogique. En plus de commander le dispositif lumineux (1), la carte Arduino (2) capte des données analogiques via différents capteurs, telles que la température, le niveau de bruit, etc.

Serveur

node.js

socket.IO

Nouvelle requête mongoDB

4

Ces données sont converties numériquement et associées à l’état du dispositif. Elles sont alors envoyées à l’ordinateur (3) via USB, terminal de liaison faisant la passerelle jusqu’à la plateforme web (4).

Stockage des variables

Si nouvelle requête, envoi de l’information

wifi

3

Envoi de la valeur des variables au serveur node

3G

terminal de liaison

récupération d’un tableur

Récupération de la valeur à l’instant t et des mot clefs

Récupération de la valeur par le terminal nomade

6

CSV

5

1 Si nouvel état, création d’un nouveau mode via la fonction random()

nouveau code = nouvelle configuration

Serial port lie le serial.print envoyé en continu

2

Saisie de mots clefs

google docs experiment

À cette étape, les données ne sont pas stockées. Elles sont seulement envoyées en permanence, avec un temps de rafraîchissement de l’ordre de la demi-seconde. Pour être stockées, l’action de l’usager est nécessaire. C’est le terminal nomade (5) qui ordonne le stockage de ces informations. Ainsi lorsque l’usager envoie la description de son ressenti, le serveur web (node.js) associe cette description avec toutes les autres données. La base de données installée sur ce serveur (mongoDB) se charge de capitaliser ces informations. Il est alors possible de les récuperer sous forme de format type tableur de données (6) au format CSV ou XML pour pouvoir ensuite les analyser. Lorsque le serveur a enregistrer ces données, il propose à l’utilisateur de reconfigurer le dispositif lumineux (1) de manière aléatoire. Ainsi le serveur envoie une requête au terminal de liaison communiquant avec la carte Arduino.

79


Si nouvelle requête, envoi de l’information

wifi

15mm

Envoi de la valeur des variables au serveur node

récupération d’un tableur

Récupération de la valeur à l’instant t et des mot clefs

CSV

15mm

15mm

générer

terminal de liaison

Ø 3mm

3G Récupération de la valeur par le terminal nomade

Le projet est composé de 25 éléments identiques. Nous utilisons des profilés en U aluminium dans lesquels sont placés des bandeaux de LED. Le choix des matériaux découle de leurs caractéristiques techniques et budgétaires. Si nouvel état, création d’un nouveau mode via la fonction random()

10mm

15mm

Serial port lie le serial.print envoyé en continu

Saisie de mots clefs

google docs experiment

nouveau code = nouvelle configuration

Caractéristiques du support : 2000mm

11mm

- Profilé en U permettant d’accueillir les bandeaux de LED. - Support léger, facilitant le transport. - Matériau usinable avec un minimum d’outillage (perceuse, scie) - Dimensions : 2000 x 15 x 15 mm Quantité achetée : 50 mètres (2x25m) Coût : 5 € TTC le mètre, vendu par 6 mètres (SMG Échirolles) Coût total : 250 € TTC Caractéristiques du dispositif lumineux : - Bandeaux souples de 32 LED par mètre - Étanche (norme IP65) - Technologie LED digitale offrant une palette de 32 millions de couleurs - Pilotable LED par LED - Découpable toute les deux LED - Faible consommation énergétique (120mA par LED) - Très bon rendement lumineux Quantité achetée : 50 mètres (2x25m) Coût : 25 € TTC (Adafruit, New York) Coût total : 1250 € TTC 81


Les éléments modulaires permettent différentes configurations spatiales, en utilisant des jonctions spécifiques.

Pieds rétractables : - Tubes carrés aluminium : 20 x 20 x 300 mm Coût : 2 € par jonction - Charnières métalliques Coût : 4 € la paire - Baguettes métalliques : 4 éléments de 200 x 15 x 2 mm

BRASURE

Jonctions orthogonales soudées par technique de brasure : - Tubes carrés aluminium : 20 x 20 x 150 mm Coût : 8 € / m (SMG Échirolles) Quantité achetée : 12 m Coût total : 96 €

Fil transparent : - Fil de pêche : 20 x 20 x 150 mm Coût : 6 € / 50 m (Fashion Leurres)

83


85


87


Serial port lie le serial.print envoyé en continu

Si nouvel état, réation d’un nouveau mode via la fonction random()

Saisie de mots clefs

google docs experiment

générer

uveau code = configuration

TP1

Connecteur +5V

TP2 GND VCC

IC1F 13

Arrivée Arduino

12

IC1D 9

74LS04N

JP1 1

8

74LS04N

2 3 4

IC1A 1

2

+5V CI DI GND

IC1C 5

6

74LS04N

R2

R1

74LS04N

Bandeau LED 1 JP3 2 3 4

C1

C2

GND

Les bandeaux de LED digitals disposent de 4 entrées : - Entrée +5V servant à alimenter les LED en éléctricité. - Entrée DI ou DATA, recoit le signal permettant de contrôler chaque LED. - Entrée CI ou CLOCK, donne la cadence de rafraichissement des informations envoyées. - Entrée GROUND ou Masse, est la référence des potentiels électriques. 14

VCC

VCC

GND

7

IC1P

GND

Les bandeaux de LED dont nous disposons sont usuellement utilisés de manière autonome. Il existe donc des kits permettant de les alimenter à leurs bases et d’en contrôler uniquement la couleur. Dans notre cas, il nous a fallu établir les contraintes engendrées par les différentes configurations spatiales, afin d’en trouver les solutions par des choix de composants électroniques. Les deux principales contraintes étaient l’alimentation en électricité ainsi que la bonne transmission du signal (données). Les kits vendus sur internet se branchent sur la base du bandeaux afin que le signal parcoure une distance très faible. Cela ne correspondant pas à notre attente, nous avons donc établi un schéma électrique accueillant des amplificateurs de signaux, permettant d’assurer la bonne transmission du signal sur de longues distances. La longueur maximale entre le microcontrolleur et le ruban de LED envisagée est de 5 mètres.

Après avoir pris en compte les contraintes électroniques, nous avons pu établir la liste complète du matériel nécessaire à la réalisation. Composants éléctroniques utilisés pour réaliser la partie Hardware :

Outils utilisés :

- 2 Arduino Mega 2560 - 100 Connecteurs mâles - 100 Connecteurs femelles - 400 Contacts - 50 Résistances 51 Ohms - 50 Condensateurs 330 pF - 25 Résistances 110 Ohms - 25 Inverteurs (logic gate) 74LS04 - 25 Supports 74LS04 - 25 Alimentations 5 Volts 10 Ampères - 25 Circuits imprimés pour récepteur - 25 Boîtiers de pellicule photo - 25 Adaptateurs Jack 5.1 - 1 Shield Arduino - 100 mètres de câble téléphonique - 50 mètres de câble secteur - 10 mètres de gaîne thermo-rétractable - 60 câbles de prototypage rapide

- 2 Fers à souder - 2 Supports à souder - 3 Bobines de fil d’étain - 1 Multimètre - 1 Dremel

Coût total : environ 900 euros 89


Pour assembler tout les composants, il a fallu réaliser des circuits imprimés spécifiques à notre projet. D’une part le circuit «récepteur», intégré dans le câble faisant la liaison entre le bandeau de LED et la carte Arduino.

Les circuits sont réalisés grâce à un procédé chimique en 4 étapes, similaire à un développement de photographies. - On place un transparent du négatif du tracé du circuit sur une plaque de résine recouverte d’une fine couche de cuivre. - Le tout est soumis à des rayons ultra-violets qui révèlent le circuit.

Fichier Gerber, récepteur

D’autre part, le «shield» permet de réceptionner les connectiques mâles de tout les bandeaux et des connecter ainsi à la carte arduino. Le mot shield désigne un support spécifique aux dimensions de la carte arduino.

- La plaque est alors immergée dans un bain de perchlorure de fer qui attaque le cuivre sauf aux endroits protégés par le révélateur. - Une fois la plaque rincée, il ne reste plus qu’à percer les trous qui laisseront passer les pattes des composants.

Capture d’écran du logiciel Eagle

Fichier Gerber, shield

Pour réaliser ces circuits imprimés, nous avons tout d’abord dessiné les fichiers appelés «gerber» correspondant au tracé du circuit sur le logiciel Eagle.

91


93


Chaque élément modulaire de notre dispositif est constitué d’une rallonge de câble. Cette rallonge intègre deux câbles, l’un de 5 mètres (câble téléphonique) assurant l’acheminement des données, l’autre de 2 mètres (câble secteur) fournissant l’énergie nécessaire aux bandeaux pour fonctionner. Ces deux câbles sont connectés ensemble via le circuit récepteur, logé dans un boîtier de pellicule photo afin d’assurer la pérennité des composants.

Chaque élément modulaire de notre dispositif est connecté au boîtier contenant les cartes Arduino et les shields. Celui-ci dispose de 25 connectiques. Un bandeau utilise deux sorties de l’arduino, une pour le signal et une pour l’horloge. De plus, il necessite d’être relié à la masse du micro-controlleur. Nous utilisons donc 50 sorties de l’arduino, ainsi qu’une entrée masse commune aux 25 bandeaux.

95


Le programme permet de contrôler l’état de chacune des LED. Pour mettre en place ce programme, il a fallu tout d’abord définir les modes lumineux qu’il devra d’ordonner. Pour cela, nous avons mis en place quatre types de modes : - monochrome fixe - monochrome dynamique - plurichromatique fixe - plurichromatique dynamique

IMMERSION

FRANCHISSEMENT

CONTEMPLATION

Ces modes sont présents dans les différentes configurations spatiales. Ils sont complémentaires par leurs oppositions : ils permettent la comparaison. Le programme est développé en langage C++ et chaque mode est programmé indépendamment. Il est donc possible de rajouter, modifier ou supprimer des parties du programme. Le code complet du programme est disponible en annexe.

97


Si nouvelle requête, envoi de l’information

wifi

Envoi de la valeur des variables au serveur node

récupération d’un tableur

Récupération de la valeur à l’instant t et des mot clefs

CSV terminal de liaison

Si nouvel état, création d’un nouveau mode via la fonction random()

Serial port lie le serial.print envoyé en continu

collecter 3G

Récupération de la valeur par le terminal nomade

Saisie de mots clefs

google docs experiment

Pour mettre en place notre protocole d’expérimentation, il est nécessaire de pouvoir récupérer les données provenant de la carte Arduino (mode lumineux actif). L’exemple ci-dessus montre le cheminement de l’information, du micro-controlleur jusqu’au serveur web. Dans ce cas, nous avons récupéré les valeurs RGB d’une LED. Grâce à un script javascript, le terminal récupère la valeur RGB via le port série (USB) qui relie l’ordinateur à la carte arduino. Ces informations sont ensuite relayées sous forme de variables au serveur, elles deviennent accessibles à tous via une page internet.

nouveau code = nouvelle configuration

Technologies et langages utilisés : - Node.JS (Serveur) - Serial Port (Hack USB) - C++ et Javascript

99


Si nouvelle requête, envoi de l’information

wifi

Envoi de la valeur des variables au serveur node

Récupération de la valeur à l’instant t et des mot clefs

récupération d’un tableur

CSV terminal de liaison

Si nouvel état, création d’un nouveau mode via la fonction random()

nouveau code = nouvelle configuration

Serial port lie le serial.print envoyé en continu

3G Récupération de la valeur par le terminal nomade

qualifier

En parallèle au programme, nous mettons en place une interface Saisie de graphique utilisateur. google docs Cette page reccueille les variables du mots clefs experiment contexte et du dispositif. Ville Lieu de l’installation (intérieur, extérieur) Configuration spatiale (immersion, franchissement, contemplation) Date et Heure Température Niveau d’intensité sonore Mode lumineux actif Lorsque l’utilisateur se connecte sur cette page, il est géolocalisé. L’interface graphique apparaît si l’utilisateur se trouve à proximité de l’installation (moins de 100 mètres). Il peut ainsi visualiser les commentaires déjà stockés pour le mode actif correspondant. Il peut alors commenter son ressenti sous forme de «tags» et donner son sentiment sur ce qu’il perçoit (j’aime, je n’aime pas) pour envoyer le tout au serveur. En réponse, celui-ci lui donnera la possibilité de reconfigurer le dispositif via un pop-up (fenêtre surgissante). Plug-ins et langages utilisés : - HTML5 - CSS 3 - jQuery - Tags Input Plugin

101


archiver

Nous avons vu comment récupérer les données numériques du dispositif ainsi que les données sensibles de l’utilisateur. Ces données sont stockées dans une base de données. Il est alors possible de les récupérer sous un format tableur afin de les analyser. Ainsi, de manière graphique, nous pouvons mettre en relation divers paramètres, permettant d’établir des constats sur le potentiel émotionnel de l’installation.

103


3. Les cadres d’expérimentations

1

Nous considérons que l’expérimentation est une étape importante dans le processus de conception architecturale ; celle-ci faisant le lien entre toutes les étapes du projet, du dessin à sa mise en œuvre. L’expérimentation permet d’avoir une vision globale du projet, à la fois technique et sensible tout en accumulant de nouveaux savoirs et savoirs-faire. Ainsi chaque occasion d’expérimenter est une opportunité pour étendre son champ de connaissance. Ces expériences nouvelles pourraient s’appuyer sur une démarche personnelle, cependant elles nécessites un minimum de financement pour voir le jour. Ainsi il est intéressant de l’associer à un évènement la supportant, lui fixant un cadre, des limites et un public. Durant notre parcours d’étudiants, nous avons pu expérimenter dans différents cadres, scolaire et extra-scolaire:

2

3

Grands ateliers de l’isle d’abeau, ENSAG : Prototypes architecturaux Cadre personnel : Structures gonflables. (1) Collectif RDV : Installations scénographiques. (2, 3)

105


Pour notre projet de diplôme (le projet lumineux), notre premier cadre d’expérimentation est le festival Hors Piste de Tokyo. Hors Pistes est un festival d’art et des images promouvant l’expérimentation de nouvelles formes de courts et longs métrages, organisé par le Centre Pompidou depuis 2006. Ce festival rassemble art et images en mouvement à travers des projections, des spectacles, des installations et des ateliers mouvementés. Chaque année, il donne à des publics variés la possibilité d’être immergé dans l’univers décalé de l’art multidisciplinaire et des médias. C’est dans ce contexte que nous allons mettre en place trois types de configuration spatiale de notre dispositif, afin de proposer différentes expériences sensibles dans différents lieux.

107


M-Daikanyama Daikanyama Tokyo: M est un espace souterrain de 145 m2 accueillant tous types d’expositions, performances et événements.

WWW Shibuya Tokyo: WWW est un ancien cinéma récemment transformé en salle de concert.

Hara Museum Shinagawa Tokyo: Le hara museum est l’un des célèbres centre d’art contemporain de Tokyo.

109


111


113


115


Annexes

117


Physiologie Perception du son

Physiologie Dispositif Sonore

Science : la psychoacoustique cherche à déterminer la manière dont les sons sont perçus et interprétés par le cerveau. En théorie l’oreille humaine perçoit des fréquences comprises entre 20 Hz et 20 kHz. Cependant nous ne sommes pas égaux devant la perception du son. Un certain nombre de facteurs influencent notre perception acoustique : l’âge, les prédispositions, l’éducation de l’oreille. Il existe deux types d’ondes non perceptible par l’oreille humaine : les infrasons (>20Hz) et les ultrasons (<20kHz). L’oreille humaine est sensible à l’amplitude des ondes sonores : 30 60 90 120 dB 0

Vibrations d’un support fluide ou solide

Oreille externe

Oreille moyenne

Oreille interne Conversion des vibrations en impulsions électriques (influx nerveux)

Nerfs sensitifs Hemisphère droit du cerveau

calme

seuil de danger seuil de douleur

L’oreille est l’organe auditif humain permettant de capter le son. Elle se divise en trois parties : l’oreille externe, l’oreille moyenne et l’oreille interne. L’oreille externe, composée du pavillon auriculaire et du conduit auditif (en liaison avec l’oreille moyenne), a pour fonction d’amplifier et de faire converger les sons vers le tympan au travers du canal tympanique. Elle est le point de départ du mécanisme physiologique de l’audition. L’oreille moyenne comprend la membrane du tympan et les osselets (marteau, enclume et étrier). Le tympan sépare l’oreille externe de l’oreille moyenne. C’est un muscle qui transmet les vibrations de l’air aux osselet de l’oreille moyenne. Ceux-ci ont pour rôle d’amplifier les vibrations perçus par l’oreille externe. L’oreille interne effectue la conversion de l’énergie mécanique, produite par les vibrations, en impulsions électriques via l’organe du Corti. En son centre se trouve la membrane basilaire qui contient plusieurs milliers de cils (environ 4000). Chaque groupe de cils est relié à une terminaison nerveuse en mesure de convertir la vibration en impulsions électriques. Ces impulsions, appelées influx nerveux, sont transmises au cerveau via les nerfs sensitifs. Ces signaux sont traités par l’hémisphère droit du cerveau.

Vibrations d’un support fluide ou solide Oreille externe

Oreille moyenne

Oreille interne

Cerveau (hémisphère droit)

À la suite de cet aspect physiologique, la perception du son induit une dimension psychologique. Le rôle du cerveau dans la perception est important, il fournit un travail d’analyse pour distinguer, reconnaître et évaluer des sons, selon leur hauteur mais aussi selon leur évolution au cours du temps. Le cerveau permet de correler les deux oreilles afin de situer le son dans l’espace (par les différences d’intensité, de phase et de filtrage). C’est aussi lui qui nous permet de reconnaître un instrument, une personne par le timbre qu’elle émet. En résumé, l’oreille transmet des informations brutes, qui une fois analysé par le cerveau, ont une qualité de son.

119


Physique Propriétés du son

Physique Propriétés du son Science du son : acoustique

Les Caractéristiques des ondes acoustiques

Les Ondes Acoustiques

Le son est caractérisé par sa fréquence, son amplitude, son timbre. Sa propagation différent selon le milieu ambiant.

Le son est une onde produite par la vibration mécanique d’un support solide ou fluide. Cette onde se propage grâce à l’élasticité du milieu environnant sous forme d’ondes longitudinales. Est définie comme onde, tout phénomène de propagation de proche en proche d’une perturbation locale dans un milieu matériel, sans transport de matière. Plus la pression acoustique est grande, plus le volume sonore est important. Les ondes acoustiques sont par définition, perceptibles par l’oreille humaine mais elles ne constituent qu’une partie des ondes mécaniques qui se transmettent par vibration de la matière. Il existe aussi des infrasons et des ultrasons dont les fréquences sont respectivement trop basses ou trop élevées pour être audibles. L’origine d’un son Au départ, un son est initié par un objet animé d’un mouvement vibratoire. Une vibration est un mouvement d’oscillation rapide autour d’une position d’équilibre. C’est un déplacement périodique qui se répète à l’identique à intervalle de temps régulier. On peut observer ce phénomène à partir de systèmes mécaniques simples comme une lame ou une corde vibrante dont le principe est repris dans différents instruments de musique. La courbe mathématique d’une onde permet de décrire l’évolution de la perturbation du milieu de propagation : elle représente la variation de la grandeur physique considérée, l’élongation, en fonction du temps. Cette variation est associée à un apport d’énergie. L’onde véhicule ainsi une information et de l’énergie en provenance de la source, modifiées par le(s) milieu(x) de transmission entre la source et le récepteur. Cette information est de nature différente selon le type d’onde. Quand une vibration est entretenue à l’identique, la perturbation se répète de façon cyclique sous la forme d’un train d’ondes successives. Les variations d’une onde périodique entretenue peuvent être représentées par une ligne sinusoïdale et il suffit de connaître la période pour définir toute la courbe. Représentation d’une onde périodique : une courbe sinusoïdale

T

+A

0

La fréquence d’un son est exprimée en hertz (Hz). À une fréquence faible correspond un son grave, à une fréquence élevée correspond un son aigu. La fréquence est l’invers de la période (T). La période est la durée d’un cycle complet de variation C’est le temps qui sépare le passage par deux maxima consécutifs. L’unité est la seconde. Classification typologique des fréquences (en Hz) 0

20 infrasons

200 basse

basse-médium

2k

12k haut-médium

20k aigu

70k ultrasons

Amplitude (pression sonore) L’amplitude, aussi appelée intensité ou volume sonore, est l’expression de la pression de l’air. Elle se mesure en décibels (dB), grandeur sans dimension, logarithme du rapport entre une grandeur caractéristique du son étudié et celle d’un son de référence. Aussi, une augmentation de 3dB multiplie la puissance par deux. L’évolution de l’amplitude dans le temps s’appelle l’enveloppe. Timbre C’est la caractéristique qui identifie un son de manière unique. Propagation (ou célérité)

Période T/2

Fréquence

Temps

La vitesse (v) d’une onde est appelée célérité. Elle s’exprime en mètre par seconde. Elle dépend de la nature de l’onde, et des caractéristiques physiques du milieu où elle se propage. Le son se déplace à 340 m/s dans l’air (1224 Km/h), 1 500 m/s dans l’eau, 6 000 m/s dans le granite. Plus le milieu est dense, plus cette vitesse est grande. Remarques : Le son se propage moins bien à l’horizontale que sous des angles L’atténuation est nettement moins forte sous le vent Le son peut être littéralement porté par une inversion basse du gradient de température. On peut utiliser les ultrasons pour créer des brouillards d’eau

élongation direction de la propagation

-A

L’équation de l’élongation de cette onde en fonction du temps est x = A sin ( ώ t + φ ) A est l’élongation maximale ; ώ est la pulsation (ώ = 2 π / T = 2 π f) en radian par seconde, φ est le déphasage ( en radian) à l’instant t0.

121


Physique Propriétés du son

Physique Propriétés du son Caractéristiques du son numérique

Les ondes acoustiques et l’environnement

Fréquence d’échantillonnage (Hz).

Les ondes acoustiques interagissent avec la matière. Si on considère le son comme un ensemble de «rayons sonores», on constate qu’un objet perturbant la propagation provoque des phénomènes d’absorption, de réflexion, de diffraction, ou d’interférences.

Lorsqu’un son est numérisé, le signal analogique (continu) qui entre dans l’ordinateur est mesuré, un certain nombre de fois par second, c’est un signal discontinu. Le son est donc découpé en «tranches», ou échantillons (en anglais « samples »). Le nombre d’échantillons disponibles dans une seconde d’audio s’appel la fréquence d’échantillonnage exprimée en hertz. Pour traduire le plus fidèlement possible le signal analogique de notre micro, il faudra prendre le plus grand nombre de mesures possible par seconde. Autrement dit, plus la fréquence d’échantillonnage sera élevée, plus la traduction numérique du signal sera proche de l’original analogique.

Résolution et quantification (bit). Une autre caractéristique importante est la résolution numérique du son, soit le nombre de « niveaux » ou de « paliers » qu’il est possible d’enregistrer pour reproduire l’amplitude du signal. Avec une résolution de 16bit, on dispose de 216, soit 65535 valeurs possibles pour traduire l’amplitude du son. Ainsi, plus la résolution est élevée, meilleur sera la dynamique (l’écart entre le son le plus faible et le plus fort qu’il est possible de reproduire). 65535

16 bits

0

L’absorption L’absorption des ondes sonores est utilisée pour insonoriser une pièce. Pour cela, il est préférable de recouvrir les murs de matières déformables ou tendres. L’onde sonore étant une onde de pression, elle va être amortie lors de la rencontre avec un obstacle mou et l’amplitude de l’onde réfléchie sera considérablement plus petite que celle de l’onde incidente. D’une manière générale, les corps mous ou poreux amortissent l’onde et conduisent mal le son. (laine de verre, coton). A l’inverse, les matières élastiques ou dures les propagent facilement ( air, eau, bois, acier).

source

La réflexion des ondes acoustiques Lorsqu’une onde heurte un obstacle de dimension supérieure à sa longueur d’onde, elle est réfléchie. Comme pour un rayon lumineux dans un miroir, les directions de propagation du son incident et du son réfléchi forment avec la normale (en pointillé) deux angles α et β égaux. Sur le schéma, la direction de propagation de l’onde initiale est représentée par une flèche. Ni la fréquence ni la longueur d’onde ne sont modifiées au cours de ce processus, l’amplitude diminue selon absorption de la surface réfléchissante.

on

de

α β e nd

hie

ec

réfl

o

Le phénomène d’écho Le son se réfléchit sur un obstacle rigide et massif dont la dimension est très supérieure à sa longueur d’onde. La réflexion d’un son correspond au phénomène de l’écho. Ainsi si un auditeur reçoit l’onde directe et l’onde réfléchie, il entend un écho quand le retard de l’onde réfléchie est supérieur à 50 millisecondes, c’est-à-dire s’il se trouve au moins à 17 mètres de la surface réfléchissante. Une partie du son est absorbée et seule une partie de l’énergie initiale est renvoyée par l’obstacle.

123


Technique Numériser un signal sonore Récepteur

Technique Numériser un signal sonore Récepteur

Pour recevoir un signal sonore, il faut utiliser un dispositif capable de transformer les vibrations d’un son en signaux électriques puis de les convertir numériquement.

Traiter et analyser le signal numérique

Convertir un signal sonore en signal analogique

De ce signal numérique, il est possible de récupérer deux types d’informations. Le niveau sonore en décibels et le spectre sonore L’analyse du spectre sonore permet de localiser les fréquences dominantes

Microphones

Le microphone convertit les variations de pressions de l’air en signaux électriques (analogique). Il comporte une partie mobile, que les ondes sonores viennent exciter. Ces oscillations sont converties en tension électrique variable, qui est acheminée vers un système d’amplification ou d’enregistrement (ou les deux). Les caractéristiques d’un microphone sont : - son type (à main, à cravate…) - sa technologie (dynamique, électrostatique…) - ses caractéristiques électro-acoustiques (sensibilité, pression acoustique maximale…) - sa directivité

Omnidirectionnel

Cardioïde

Hypercardioïde

Canon

Il est possible d’isoler ou d’effacer certaines fréquences via différents filtres (équaliseur, filtre passe-haut…).

Bi-directionnel

Convertir le signal analogique en signal numérique Pour échantilloner ce signal sonore numérique, il est nécessaire d’utiliser un convertisseur analogique-numérique. Sur l’informatique c’est le rôle joué par la carte son, lorsqu’elle possède une entrée ligne. Il transforme la grandeur physique (tension, courant) en valeur numérique. Il possède une entrée analogique et une sortie numérique, ainsi qu’une entrée «début de conversion» et une sortie «fin de conversion».

sortie numérique

entrée analogique

C.A.N début de conversion

fin de conversion

125


Physiologie Corps et climat

Physiologie Corps et climat Température / Thermoception

Ensoleillement / Réaction cutanée

La thermoception est le sens de perception de la chaleur et de l’absence de chaleur (froid) par la peau. En outre il existe des désaccords subsistant quant au nombre de sens consacrés à ce type de perception, étant donné le fait que les thermorécepteurs cutanés diffèrent sensiblement des thermorécepteurs homéostatiques qui permettent un rétrocontrôle de la température interne du corps.

Sous l’action des rayons UV, les kératinocytes, cellules de la couche superficielle de la peau, vont se multiplier et la rendre moins perméable aux rayonnements. Réaction cutanée : production de mélanine par l’épiderme traduisant un mécanisme de défense naturelle en réponse à un excès de rayonnement = bronzage

Sensibles au chaud, la stimulation des thermorécepteurs entraîne : - vasodilatation : augmentation du calibre d’un vaisseau. - sudation : transpiration Sensibles au froid, la stimulation des thermorécepteurs entraîne : - piloérection - lipolyse : dégradation des lipides afin de fournir de l’énergie - provoque vasoconstriction et frisson

Précipitations - Humidité - Vent / Toucher

Changement de la température extérieur

Changement de la température centrale du corps

Thermorécepteurs périphériques

Thermorécepteurs centraux

La perception cutanée résulte de la stimulation d’une partie de la peau alors que le segment corporel qui la porte est totalement immobile. Dans ce cas, comme seule la couche superficielle de la peau est soumise à des déformations mécaniques, le traitement perceptif ne concerne que les informations cutanées liées au stimulus appliqué sur la main. La perception tactilo-kinesthésique ou haptique résulte de la stimulation de la peau résultant des mouvements actifs d’exploration de la main entrant en contact avec des objets. La gravité et les forces déployées par le système proprioceptif vont non seulement être intégrées par le système nerveux central dans un but purement «moteur» mais vont être perçues par le système en termes de « sens de l’effort ». Des processus très complexes sont impliqués ici car ils doivent intégrer simultanément les informations cutanées et les informations proprioceptives et motrices liées aux mouvements d’exploration cutanées pour former un ensemble indissociable.

Centre thermorégulateur hypothalamique Réponses favorisant une baisse de la température

Réponses favorisant une élévation de la température

Neurones sympathiques cholinergiques

Glandes sudoripares

Neurones moteurs somatiques

Neurones sympathiques adrénergiques

Vaisseaux sanguins cutanés

Vaisseaux sanguins cutanés

Graisse brune

Muscles squelettiques

Transpiration

Vasodilatation

Vasoconstriction

Thermogenèse sans frisson

Thermogenèse avec frisson

Chaleur perdue par évaporation

Chaleur perdue dans l’environnement

Chaleur conservée

Production métabolique de chaleur

127


Physique Propriétés climatiques

Technique Dispositif climatique Émetteur

Température / Chaleur

Température / Dispositif thermique

Les principes de chauffage (transmission de chaleur entre un corps et un autre) reposent sur trois phénomènes physiques. - La conduction, transmission directe de la chaleur d’un corps au toucher d’une autre. - La radiation, notamment par infrarouge, il relève de l’électromagnétisme et n’a pas besoin de contact direct pour transmettre la chaleur d’un corps à un autre : la transmission thermique se fait par l’intermédiaire d’ondes qui peuvent traverser l’espace indéfiniment tant qu’elles ne rencontrent pas de surfaces solides. - La convection, ce phénomène est produit se produit par exemple par la présence de vents frais d’été qui rafraîchissent l’atmosphère.

Chauffage: - Conduction (ex: gaz naturel, GPL, fuel, électricité, bois) - Radiation (ex: soleil, ampoule infrarouge)

Vent / Ventillation

Climatisation : - Centrales unizones - Centrales multizones - Systèmes autonomes

Vent / Ventillation

Ensoleillement / Rayonnement

- Ventilation naturelle, qui se fait par ouvrants extérieurs ou via des conduits à tirage naturel. - Ventilation hybride, combine les avantages de la ventilation naturelle et de la ventilation mécanique. Le système est piloté suivant les conditions climatiques et bascule automatiquement entre le mode naturel et le mode assistance mécanique. - Ventilation mécanique contrôlée simple flux (habitats individuels, collectifs récents et dans les bâtiments du secteur tertiaire). - Ventilation mécanique contrôlée double flux (bâtiments tertiaire) - Ventilation centralisée, contrôlée par une ou plusieurs centrale de traitement d’air, avec ou sans recyclage d’air (hypermarchés, centres commerciaux et immeubles de bureaux, Laboratoires).

Le rayonnement solaire

Ensoleillement / Rayonnement

Les vents sont provoqués par un réchauffement inégalement réparti à la surface de la planète par l’énergie solaire, et par la rotation de la planète. Les vents sont généralement classifiés selon leur ampleur spatiale, leur vitesse, leur localisation géographique, le type de force qui les produit et leurs effets. Comme les courants marins, le vent est décrit par les lois de la dynamique des fluides.

Humidité / Hygrométrie L’humidité mesure la quantité de vapeur d’eau présente dans l’air, sans compter l’eau liquide et la glace. Pour que des nuages se forment, et qu’il y ait des précipitations, l’air doit atteindre une humidité relative légèrement supérieure à 100% dans le voisinage des gouttelettes qui se forment. Cette sursaturation est nécessaire pour vaincre la tension de surface des molécules d’eau et ainsi qu’elles s’unissent sur une poussière servant de noyau de condensation. Après que les gouttelettes ont atteint un certain diamètre, l’humidité relative retombe à 100% dans leur voisinage. Ceci se produit normalement quand l’air s’élève et se refroidit.

Précipitations / Fumée La fréquence et la nature des précipitations dans une région géographique donnée sont des caractéristiques importantes de son climat. Elles contribuent de façon essentielle à la fertilité et à l’habitabilité des zones tempérées ou tropicales ; dans les zones polaires, elles aident au maintien des calottes glaciaires. La précipitation peut prendre les formes suivantes (parfois mélangées): - Liquide: Pluie, Bruine, Pluie verglaçante/Bruine verglaçante - Solide: Neige, Neige en grains, Neige roulée, Grésil, Grêle, Granule de glace, Cristal de glace

- Lampes UltraViolets

Humidité / Hygrométrie Humidificateurs : - Humidificateur à vapeur : évaporation - Humidificateur à ultrasons : diaphragme métallique vibrant à une fréquence ultrasonore crée des microgouttelettes d’eau ionisées négativement. Elles quittent l’humidificateur sous forme d’un brouillard frai - Humidificateur à pression : (haute, simple basse, ou doubles basse pression) par diffusion. Déshumidificateur: - la réfrigération (sécheurs frigorifiques): compresseur-condenseur-évaporateur - l’adsorption (sécheurs à adsorption): utiliser les propriétés de certains dessicant (déshydratants) - l’absorption: se distingue des sécheurs à adsorption par le fait que le dessicant n’est jamais régénéré - la perméation (sécheurs à membranes): Menbranes poreuses filtrant l’eau - la compression: sur-comprimer l’air pour provoquer la condensation de la vapeur d’eau

Précipitations / Fumée - Machine à fumée : vaporisant un fluide à base d’eau contenant des glycols ou de la glycérine. Ou atomisant des huiles minérales. - Machine à brouillard : vapeur d’eau - Carboglass

129


Programme du projet lumineux commenté #include «Arduino.h» #include «FreeMemory.h» #include «EZPrint.h» #include #include #include #include #include #include

«SPI.h» «LedStrip.h» «Mode.h» «ModeChase.h» «ModeHeartBeat.h» «ModeNeon.h»

// // Gestion des bandeaux // #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) // Pour tester sur UNO //#define MAX_STRIPS 1 #define STRIP_LEN 32 #else // Le vrai truc sur Mega #define STRIP_LEN 62 #endif // Les bandeaux LedStrip Strip[MAX_STRIPS]; // Les modes associés Mode* Mode[MAX_STRIPS] = { 0, }; // // gestion des commandes sur liaison série // #define CMD_LEN 64 #define CMD_TMOUT 1000 char Command[CMD_LEN]; #define MAX_TOKEN 10 char *Token[MAX_TOKEN]; uint8_t nToken; const char TokenSeperator[] = «=,; \r\n»; void gereSerie(); void StartMode( uint8_t stripId, uint8_t mode ); void StopMode( uint8_t stripId ); 131


enum Modes { CHASE = 1, HEARTBEAT, NEON }; // // Initialisation // void setup() { Serial.begin( 19200 ); Serial.setTimeout( CMD_TMOUT ); #if DEBUG Serial << _PSTR(«freeMemory0=») << dec << freeMemory() << endl; #endif // // Initialisation de MAX_STRIPS bandeaux // int stripId; int led; for ( stripId = 0 ; stripId < MAX_STRIPS ; stripId++ ) { #if DEBUG Serial << _PSTR(«-- Creation du bandeau «) << stripId << endl; #endif Strip[stripId].updateId( stripId ); // initialise le bandeau comme le Nieme (ID : 0..15) Strip[stripId].updateLength( STRIP_LEN ); // LEDs par bandeau Strip[stripId].begin(); Strip[stripId].setAllPixelsColor( LedStrip::BLACK ); #if DEBUG Serial << _PSTR(«freeMemory=») << dec << freeMemory() << endl; #endif #if DEBUG Serial << _PSTR(«-- Startmode pour strip «) << stripId << endl; #endif StartMode( stripId, random( 1, 3 ) ); #if DEBUG

Serial << _PSTR(«freeMemory=») << dec << freeMemory() << endl; #endif } #if DEBUG Serial << _PSTR(«freeMemory1=») << dec << freeMemory() << endl; #endif #if DEBUG Serial << _PSTR(«-- Init done !») << endl; #endif } // // Boucle de traitement // void loop() { // // On execute la gestion de mode pour chaque bandeau les uns après les autres (sans afficher) // En passant le paramètre ‘true’ on demande au bandeau de s’afficher dès qu’il y a un changement // int stripId; for ( stripId = 0 ; stripId < MAX_STRIPS ; stripId++ ) { // si le mode est initialisé, appeler update() if ( Mode[stripId] ) Mode[stripId]->run( true ); } // // Gestion de commande Liaison série // if ( Serial.available() ) gereSerie(); } // // gestion des commandes sur liaison série // void gereSerie() { // réception d’une ligne de commande (terminée par 133


‘retour-chariot’ int nchar = Serial.readBytesUntil( ‘\n’, Command, CMD_ LEN-1 ); if ( nchar < 1 ) { #if DEBUG Serial << _PSTR(«gereSerie: pas de caractères reçu») << endl; #endif return; } Command[nchar] = ‘\0’; #if DEBUG Serial << _PSTR(«gereSerie: Command[«) << dec << nchar << _PSTR(«]=») << Command << endl; #endif // découpe de la ligne de commande de token (motsclés) nToken = 0; Token[nToken] = strtok( Command, TokenSeperator ); while ( Token[nToken] ) Token[++nToken] = strtok( NULL, TokenSeperator ); // Si le nombre de mots-clés trouvé est nul, aucune commande valide #if DEBUG Serial << _PSTR(«gereSerie: nToken=») << dec << nToken << endl; #endif if ( nToken < 1 ) return; // analyse du 1er mot = commande if ( (strcmp( Token[0], «stop» ) == 0) && (nToken > 1) ) // Commande STOP avec au moins 1 paramètre { // Les mots-clés suivant indiquent le numéro du bandeau int stripId = atoi( Token[1] ); StopMode(stripId); } else if ( (strcmp( Token[0], «start» ) == 0) && (nToken > 2) ) // Commande START avec au moins 2 paramètres { // Les mots-clés suivant indiquent le numéro du bandeau puis le numéro du mode a activer int stripId = atoi( Token[1] );

int mode = atoi( Token[2] ); StartMode( stripId, mode ); } else { #if DEBUG Serial << _PSTR(«gereSerie: non reconnu Token[0]=») << Token[0] << endl; #endif } } void StartMode( uint8_t stripId, uint8_t mode ) { // On commence par arrêter s’il y a un mode actif StopMode( stripId ); #if DEBUG Serial << _PSTR(«StartMode(«) << stripId << _PSTR(«,») << mode << _PSTR(«)») << endl; #endif // Activation du mode switch ( mode ) { case CHASE: { Mode[stripId] = new ModeChase( Strip[stripId] ); break; } case HEARTBEAT: { Mode[stripId] = new ModeHeartBeat( Strip[stripId] ); break; } case NEON: { Mode[stripId] = new ModeNeon( Strip[stripId] ); break; } #if DEBUG default: Serial << _PSTR(« KO: mode non 135


reconnu») << endl; #endif } } void StopMode( uint8_t stripId ) { #if DEBUG Serial << _PSTR(«StopMode(«) << stripId << _PSTR(«)») << endl; #endif // S’il ya un mode actif, on l’arrête et on marque inactif if ( Mode[stripId] ) { delete Mode[stripId]; Mode[stripId] = NULL; #if DEBUG Serial << _PSTR(« fait») << endl; #endif } else { #if DEBUG Serial << _PSTR(« Pas de mode actif!») << endl; #endif } } #include «EZPrint.h» uint8_t EZPrint_base = DEC; uint8_t EZPrint_digits = 2; const char EZPrint_endl[] PROGMEM = EOL; #ifndef _EZPRINT_H_ #define _EZPRINT_H_ #if (ARDUINO >= 100) #include <Arduino.h> #else #include <WProgram.h> #endif

#include «avr/pgmspace.h» #define _PSTR(a)

(const __FlashStringHelper *)PSTR(a)

extern uint8_t EZPrint_base; extern uint8_t EZPrint_digits; extern const char EZPrint_endl[] PROGMEM; #define EOL «\r\n» #define endl (const __FlashStringHelper *)EZPrint_endl enum EZPrintBase { bin = 2, oct = 8, dec = 10, hex = 16 }; inline void EZPrintDigits( int _digits ) { EZPrint_digits = _digits; } inline Print& operator<<( Print& output, EZPrintBase _pb ) { EZPrint_base = _pb; return output; } inline Print& operator<<( Print& output, const __ FlashStringHelper *val ) { output.print( (const __FlashStringHelper *)val ); return output; } inline Print& operator<<( Print& output, const String& val ) { output.print( val ); return output; } inline Print& operator<<( Print& output, const char val[] ) { output.print( val ); return output; } inline Print& operator<<( Print& output, char val ) { output.print( val ); 137


}

return output;

inline Print& operator<<( Print& output, unsigned char val ) { output.print( val, EZPrint_base ); return output; } inline Print& operator<<( Print& output, int val ) { output.print( val, EZPrint_base ); return output; } inline Print& operator<<( Print& output, unsigned int val ) { output.print( val, EZPrint_base ); return output; } inline Print& operator<<( Print& output, long val ) { output.print( val, EZPrint_base ); return output; } inline Print& operator<<( Print& output, unsigned long val ) { output.print( val, EZPrint_base ); return output; } inline Print& operator<<( Print& output, double val ) { output.print( val, EZPrint_digits ); return output; } inline Print& operator<<( Print& output, Printable& val ) { output.print( val ); return output; } #endif /* _EZPRINT_H_ */

#if (ARDUINO >= 100) #include <Arduino.h> #else #include <WProgram.h> #endif extern unsigned int __heap_start; extern void *__brkval; /* * The free list structure as maintained by the * avr-libc memory allocation routines. */ struct __freelist { size_t sz; struct __freelist *nx; }; /* The head of the free list structure */ extern struct __freelist *__flp; #include «FreeMemory.h» /* Calculates the size of the free list */ int freeListSize() { struct __freelist* current; int total = 0; for (current = __flp; current; current = current->nx) { total += 2; /* Add two bytes for the memory block’s header

*/

} }

total += (int) current->sz;

return total;

int freeMemory() { int free_memory; if ((int)__brkval == 0) { free_memory = ((int)&free_memory) - ((int)&__heap_start); } else { free_memory = ((int)&free_memory) - ((int)__brkval); free_memory += freeListSize(); } return free_memory; 139


} #ifndef MEMORY_FREE_H #define MEMORY_FREE_H #ifdef __cplusplus extern «C» { #endif int freeMemory(); #ifdef } #endif

__cplusplus

#endif // With insipration from Michael Noland http://michaelnoland. com/speeding-up-LedStrip-show-without-hardware-spi/ // Modified for Barbudor’s LedStrip shield to control multiple LED strips with hard-coded pin mapping #if (ARDUINO >= 100) #include <Arduino.h> #else #include <WProgram.h> #endif #include «SPI.h» #include «LedStrip.h» /************************************************************ *****************/ //* HARD CODED PINS - LedStrips are referred to an ID which lead to the pin mapping listed in PinArray. // This is in order to allow compile time optimization of function showFast() // WARNING : Any changes in the array below must be updated in showFast() // You must know PORT and bit-offset of the pins you want to use. #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) // Arduino UNO const LedStrip::PortDef_t LedStrip::PinArray[MAX_STRIPS] = { // CLOCK (pin, offset, register) & DATA (pin, offset, register)

{ 2, 3 }, // Bandeau 0 // D02,D03 (PD.2, PD.3) { 4, 5 }, // Bandeau 1 // D04,D05 (PD.4, PD.5) { 6, 7 }, // Bandeau 2 // D06,D07 (PD.6, PD.7) { 8, 9 }, // Bandeau 3 // D08,D09 (PB.0, PB.1) { 10, 11 } // Bandeau 4 // D10,D11 (PB.2, PB.3) }; #else // Arduino MEGA2560 const LedStrip::PortDef_t LedStrip::PinArray[MAX_STRIPS] = { // CLOCK (pin, offset, register) & DATA (pin, offset, register) { 22, 23 }, // Bandeau 0 // D22,D23 (PA.0, PA.1) { 24, 25 }, // Bandeau 1 // D24,D25 (PA.2, PA.3) { 26, 27 }, // Bandeau 2 // D26,D27 (PA.4, PA.5) { 28, 29 }, // Bandeau 3 // D28,D29 (PA.6, PA.7) { 30, 31 }, // Bandeau 4 // D30,D31 (PC.7, PC.6) { 32, 33 }, // Bandeau 5 // D32,D33 (PC.5, PC.4) { 34, 35 }, // Bandeau 6 // D34,D35 (PC.3, PC.2) { 36, 37 }, // Bandeau 7 // D36,D37 (PC.1, PC.0) { 38, 39 }, // Bandeau 8 // D38,D39 (PD.7, PG.2) { 40, 41 }, // Bandeau 9 // D40,D41 (PG.1, PG.0) { 42, 43 }, // Bandeau 10 // D42,D43 (PL.7, PL.6) { 44, 45 }, // Bandeau 11 // D44,D45 (PL.5, PL.4) { 46, 47 }, // Bandeau 12 // D46,D47 (PL.3, PL.2) { 48, 49 }, // Bandeau 13 // D49,D49 (PL.1, PL.0) { 50, 51 }, // Bandeau 14 // D50,D51 (PB.3, PB.2) { 52, 53 } // Bandeau 15 // D52,D53 (PB.1, PB.0) }; #endif // Constructor for use with hardware SPI (specific clock/data pins): LedStrip::LedStrip(uint16_t n) { pause = 0; alloc(n); updateId(); } // Constructor for use with arbitrary clock/data pins: LedStrip::LedStrip(uint16_t n, uint8_t id) { pause = 0; alloc(n); updateId(id); } // via Michael Vogt/neophob: empty constructor is used when 141


strip length // isn’t known at compile-time; situations where program config might be // read from internal flash memory or an SD card, or arrive via serial // command. If using this constructor, MUST follow up with updateLength() // and updateId() to establish the strip length and output pins! LedStrip::LedStrip(void) { numLEDs = 0; pixels = NULL; begun = false; pause = 0; updateId(); // Must assume hardware SPI until pins are set } // Allocate 3 bytes per pixel, init to RGB ‘off’ state: void LedStrip::alloc(uint16_t n) { // Allocate 3 bytes per pixel: if(NULL != (pixels = (uint8_t *)malloc(n * 3))) { memset(pixels, 0x80, n * 3); // Init to RGB ‘off’ state numLEDs = n; } else numLEDs = 0; begun = false; pause = 0; } // Activate hard/soft SPI as appropriate: void LedStrip::begin(void) { if(hardwareSPI == true) { startSPI(); } else { pinMode(datapin, OUTPUT); pinMode(clkpin , OUTPUT); writeLatch(numLEDs); } begun = true; } // Change pin assignments post-constructor, switching to hardware SPI: void LedStrip::updateId(void) { hardwareSPI = true; datapin = clkpin = 0; // If begin() was previously invoked, init the SPI hardware now:

if(begun == true) startSPI(); // Otherwise, SPI is NOT initted until begin() is explicitly called. // Note: any prior clock/data pin directions are left as-is and are // NOT restored as inputs! } // Change pin assignments post-constructor, using arbitrary pins: void LedStrip::updateId(uint8_t _id) { // Note: any prior clock/data pin directions are left as-is and are // NOT restored as inputs! id = _id; datapin = PinArray[id].d; dataport = portOutputRegister(digitalPinToPort(datapin)); datapinmask = digitalPinToBitMask(datapin); clkpin = PinArray[id].c; clkport = portOutputRegister(digitalPinToPort(clkpin)); clkpinmask = digitalPinToBitMask(clkpin); if(begun == true) { // If begin() was previously invoked... // If previously using hardware SPI, turn that off: if(hardwareSPI == true) SPI.end(); // Regardless, now enable output on ‘soft’ SPI pins: pinMode(datapin, OUTPUT); pinMode(clkpin, OUTPUT); writeLatch(numLEDs); } // Otherwise, pins are not set to outputs until begin() is called. }

hardwareSPI = false;

// Enable SPI hardware and set up protocol details: void LedStrip::startSPI(void) { SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV8); // 2 MHz // SPI bus is run at 2MHz. Although the LPD8806 should, in theory, // work up to 20MHz, the unshielded wiring from the Arduino is more 143


// susceptible to interference. get. }

Experiment and see what you

writeLatch(numLEDs);

uint8_t LedStrip::numPixels(void) { return numLEDs; } // Change strip length (see notes with empty constructor, above): void LedStrip::updateLength(uint16_t n) { if(pixels != NULL) free(pixels); // Free existing data (if any) if(NULL != (pixels = (uint8_t *)malloc(n * 3))) { // Alloc new data memset(pixels, 0x80, n * 3); // Init to RGB ‘off’ state numLEDs = n; } else numLEDs = 0; // ‘begun’ state does not change -- pins retain prior modes if(begun == true) writeLatch(n); // Write zeros for new length } // Issue latch of appropriate length; pass # LEDs, *not* latch length void LedStrip::writeLatch(uint16_t n) { // Latch length varies with the number of LEDs: n = ((n + 63) / 64) * 3;

}

if (hardwareSPI) { while(n--) SPI.transfer(0); } else { *dataport &= ~datapinmask; // Data is held low throughout for(uint16_t i = 8 * n; i>0; i--) { *clkport |= clkpinmask; *clkport &= ~clkpinmask; } }

// This is how data is pushed to the strip. Unfortunately, the company // that makes the chip didnt release the protocol document or

you need // to sign an NDA or something stupid like that, but we reverse engineered // this from a strip controller and it seems to work very nicely! void LedStrip::show(void) { uint16_t i, nl3 = numLEDs * 3; // 3 bytes per LED // write 24 bits per pixel if (hardwareSPI) { for (i=0; i<nl3; i++ ) { SPDR = pixels[i]; while(!(SPSR & (1<<SPIF))); } } else { for (i=0; i<nl3; i++ ) { for (uint8_t bit=0x80; bit; bit >>= 1) { if(pixels[i] & bit) *dataport |= datapinmask; else *dataport &= ~datapinmask; *clkport |= clkpinmask; *clkport &= ~clkpinmask; } } } writeLatch(numLEDs); // Write latch at end of data // We need to have a delay here, a few ms seems to do the job // shorter may be OK as well - need to experiment :( delay(pause); } #define #define #define

TRANSMIT_BIT(data,mask,cmask,creg,dmask,dreg) \ if (data & mask) dreg |= dmask; else dreg &= ~dmask; \ creg |= cmask; \ creg &= ~cmask; PULSE_CLOCK(cmask,creg) \ creg |= cmask; \ creg &= ~cmask; DEF_SHOWFAST(id,cbit,creg,dbit,dreg) \ void LedStrip::showFastID##id() \ { \ 145


byte* DataPtr = pixels; \ int nBytes = numLEDs * 3; \ while( --nBytes ) \ { \ byte CurrentByte = *DataPtr++; \ TRANSMIT_BIT( CurrentByte, _BV(7), _ BV(cbit), creg, _BV(dbit), dreg ); \ TRANSMIT_BIT( CurrentByte, _BV(6), _ BV(cbit), creg, _BV(dbit), dreg ); \ TRANSMIT_BIT( CurrentByte, _BV(5), _ BV(cbit), creg, _BV(dbit), dreg ); \ TRANSMIT_BIT( CurrentByte, _BV(4), _ BV(cbit), creg, _BV(dbit), dreg ); \ TRANSMIT_BIT( CurrentByte, _BV(3), _ BV(cbit), creg, _BV(dbit), dreg ); \ TRANSMIT_BIT( CurrentByte, _BV(2), _ BV(cbit), creg, _BV(dbit), dreg ); \ TRANSMIT_BIT( CurrentByte, _BV(1), _ BV(cbit), creg, _BV(dbit), dreg ); \ TRANSMIT_BIT( CurrentByte, _BV(0), _ BV(cbit), creg, _BV(dbit), dreg ); \ } \ dreg &= ~_BV(dbit); \ nBytes = ((numLEDs + 63) / 64) * 3; \ while( --nBytes ) \ { \ PULSE_CLOCK( _BV(cbit), creg ); \ PULSE_CLOCK( _BV(cbit), creg ); \ PULSE_CLOCK( _BV(cbit), creg ); \ PULSE_CLOCK( _BV(cbit), creg ); \ PULSE_CLOCK( _BV(cbit), creg ); \ PULSE_CLOCK( _BV(cbit), creg ); \ PULSE_CLOCK( _BV(cbit), creg ); \

PULSE_CLOCK( _BV(cbit), creg ); \ } \ if (pause) delay(pause); \ } #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) DEF_SHOWFAST(0,2,PORTD,3,PORTD) // D02,D03 (PD.2, PD.3) DEF_SHOWFAST(1,4,PORTD,5,PORTD) // D04,D05 (PD.4, PD.5) DEF_SHOWFAST(2,6,PORTD,7,PORTD) // D06,D07 (PD.6, PD.7) DEF_SHOWFAST(3,0,PORTB,1,PORTB) // D08,D09 (PB.0, PB.1) DEF_SHOWFAST(4,2,PORTB,3,PORTB) // D10,D11 (PB.2, PB.3) #else DEF_SHOWFAST(0, 0,PORTA,1,PORTA) // D22,D23 (PA.0, PA.1) DEF_SHOWFAST(1, 2,PORTA,3,PORTA) // D24,D25 (PA.2, PA.3) DEF_SHOWFAST(2, 4,PORTA,5,PORTA) // D26,D27 (PA.4, PA.5) DEF_SHOWFAST(3, 6,PORTA,7,PORTA) // D28,D29 (PA.6, PA.7) DEF_SHOWFAST(4, 7,PORTC,6,PORTC) // D30,D31 (PC.7, PC.6) DEF_SHOWFAST(5, 5,PORTC,4,PORTC) // D32,D33 (PC.5, PC.4) DEF_SHOWFAST(6, 3,PORTC,2,PORTC) // D34,D35 (PC.3, PC.2) DEF_SHOWFAST(7, 1,PORTC,0,PORTC) // D36,D37 (PC.1, PC.0) DEF_SHOWFAST(8, 7,PORTD,2,PORTG) // D38,D39 (PD.7, PG.2) DEF_SHOWFAST(9, 1,PORTG,0,PORTG) // D40,D41 (PG.1, PG.0) DEF_SHOWFAST(10,7,PORTL,6,PORTL) // D42,D43 (PL.7, PL.6) DEF_SHOWFAST(11,5,PORTL,4,PORTL) // D44,D45 (PL.5, PL.4) DEF_SHOWFAST(12,3,PORTL,2,PORTL) // D46,D47 (PL.3, PL.2) DEF_SHOWFAST(13,1,PORTL,0,PORTL) // D49,D49 (PL.1, PL.0) 147


DEF_SHOWFAST(14,3,PORTB,2,PORTB) PB.2) DEF_SHOWFAST(15,1,PORTB,0,PORTB) PB.0) #endif

// D50,D51

(PB.3,

// D52,D53

(PB.1,

void LedStrip::showFast(void) { switch( id ) { case 0: showFastID0(); break; case 1: showFastID1(); break; case 2: showFastID2(); break; case 3: showFastID3(); break; case 4: showFastID4(); break; #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) #else case 5: showFastID5(); break; case 6: showFastID6(); break; case 7: showFastID7(); break; case 8: showFastID8(); break; case 9: showFastID9(); break; case 10: showFastID10(); break; case 11: showFastID11(); break; case 12: showFastID12(); break; case 13: showFastID13(); break; case 14: showFastID14(); break; case 15: showFastID15(); break; #endif } } // Convert separate R,G,B into combined 32-bit GRB color: uint32_t LedStrip::Color(byte r, byte g, byte b) { return 0x808080 | ((uint32_t)g << 16) | ((uint32_t)r << 8) | (uint32_t)b; } // Set pixel color from separate 7-bit R, G, B components: void LedStrip::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b) { if(n < numLEDs) { // Arrays are 0-indexed, thus NOT ‘<=’ uint8_t *p = &pixels[n * 3]; *p++ = g | 0x80; // LPD8806 color order is GRB, *p++ = r | 0x80; // not the more common RGB, *p++ = b | 0x80; // so the order here is intentional; don’t «fix»

}

}

// Set pixel color from ‘packed’ 32-bit RGB value: void LedStrip::setPixelColor(uint16_t n, uint32_t c) { if(n < numLEDs) { // Arrays are 0-indexed, thus NOT ‘<=’ uint8_t *p = &pixels[n * 3]; *p++ = (c >> 16) | 0x80; *p++ = (c >> 8) | 0x80; *p++ = c | 0x80; } } // Set pixel color from separate 7-bit R, G, B components: void LedStrip::setAllPixelsColor( uint8_t r, uint8_t g, uint8_t b) { uint8_t *p = pixels; for ( uint8_t led = 0 ; led < numLEDs ; led ++ ) { *p++ = g | 0x80; // LPD8806 color order is GRB, *p++ = r | 0x80; // not the more common RGB, *p++ = b | 0x80; // so the order here is intentional; don’t «fix» } } // Set pixel color from ‘packed’ 32-bit RGB value: void LedStrip::setAllPixelsColor( uint32_t c) { setAllPixelsColor( 0x7F & (c >> 16), 0x7F & (c >> 8), 0x7F & (c) ); } // Query color from previously-set pixel (returns packed 32bit GRB value) uint32_t LedStrip::getPixelColor(uint16_t n) { if(n < numLEDs) { uint16_t ofs = n * 3; return ((uint32_t)((uint32_t)pixels[ofs ] << 16) | (uint32_t)((uint32_t)pixels[ofs + 1] << 8) | (uint32_t)pixels[ofs + 2]) & 0x7f7f7f; } }

return 0; // Pixel # is out of bounds 149


#ifndef _LEDSTRIP_H_ #define _LEDSTRIP_H_ #if (ARDUINO >= 100) #include <Arduino.h> #else #include <WProgram.h> #include <pins_arduino.h> #endif #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) #define MAX_STRIPS 5 #else #define MAX_STRIPS 16 #endif #define LED_STRIP_COLOR(r,g,b) (0x808080 | ((uint32_t)(g) << 16) | ((uint32_t)(r) << 8) | (uint32_t)(b)) class LedStrip { public: LedStrip(uint16_t n); // Constructor for use with hardware SPI (specific clock/data pins): LedStrip(uint16_t n, uint8_t id); // Configurable pins LedStrip(void); // Empty constructor; init pins/strip length later uint8_t b);

void void void void b); void void

begin(void); show(void); showFast(void); setPixelColor(uint16_t n, uint8_t r, uint8_t g, setPixelColor(uint16_t n, uint32_t c); setAllPixelsColor( uint8_t r, uint8_t g, uint8_t

void setAllPixelsColor( uint32_t c); void clear() { memset(pixels, 0x80, numLEDs * 3); } void updateId(uint8_t id); // Change pins, configurable void updateId(void); // Change pins, hardware SPI void updateLength(uint16_t n); // Change strip length uint8_t numPixels(void); uint8_t getId() { return id; } static uint32_t Color(byte, byte, byte); uint32_t getPixelColor(uint16_t n);

uint8_t pause;

// Delay (in milliseconds) after latch

uint8_t *pixels; // Holds LED color values (3 bytes each) static const uint32_t BLACK = LED_STRIP_ COLOR( 0, 0, 0 ); static const uint32_t WHITE = LED_STRIP_ COLOR( 127, 127, 127 ); static const uint32_t RED = LED_STRIP_ COLOR( 127, 0, 0 ); static const uint32_t GREEN = LED_STRIP_ COLOR( 0, 127, 0 ); static const uint32_t BLUE = LED_STRIP_ COLOR( 0, 0, 127 ); static const uint32_t CYAN = LED_STRIP_ COLOR( 0, 127, 127 ); static const uint32_t YELLOW = LED_STRIP_COLOR( 127, 127, 0 ); static const uint32_t MAGENTA = LED_STRIP_COLOR( 127, 0, 127 ); protected: typedef struct _PortDef { const uint8_t c; // Clock pin in Arduino numbering const uint8_t d; // Data pin in Arduino numering } PortDef_t; static const PortDef_t PinArray[MAX_STRIPS]; uint8_t numLEDs; // Number of RGB LEDs in strip uint8_t id; // ID of the ledstrip 0..15 uint8_t clkpin; // Clock pin numbers uint8_t datapin; // Data pin numbers uint8_t clkpinmask; // Clock PORT bitmasks uint8_t datapinmask; // Data PORT bitmasks volatile uint8_t* clkport; 151


// Clock PORT registers volatile uint8_t* // Data PORT registers

dataport;

void alloc(uint16_t n); void startSPI(void); void writeLatch(uint16_t n); boolean hardwareSPI; // If ‘true’, using hardware SPI boolean begun; // If ‘true’, begin() method was previously invoked void showFastID0(); void showFastID1(); void showFastID2(); void showFastID3(); void showFastID4(); #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) #else void showFastID5(); void showFastID6(); void showFastID7(); void showFastID8(); void showFastID9(); void showFastID10(); void showFastID11(); void showFastID12(); void showFastID13(); void showFastID14(); void showFastID15(); #endif }; #endif // #ifndef _LEDSTRIP_H_ #include «Mode.h» #include «EZPrint.h»

#ifndef MODE_H_ #define MODE_H_ #if (ARDUINO >= 100) #include <Arduino.h> #else #include <WProgram.h> #include <pins_arduino.h> #endif #include «LedStrip.h» class Mode { public: // Constructeur. Le constructeur doit �tre appell� en passant comme param�tre le bandeau auquel il s’applique Mode( LedStrip& _strip ); virtual ~Mode(); virtual void run(boolean _bShow = false) = 0; // Fonction virtuelle pure - Mode est une classe abstraite virtual void update(boolean _bShow = false) = 0; // Fonction virtuelle pure - Mode est une classe abstraite void show() { strip.showFast(); } static const long DefaultUpdatePeriod = 100; protected: LedStrip strip; };

#endif /* MODE_H_ */

Mode::Mode( LedStrip& _strip ) { strip = _strip; strip.clear(); }

#include «ModeChase.h» #include «EZPrint.h»

Mode::~Mode() {

ModeChase::ModeChase( LedStrip&

#define TRACE_RUN #define TRACE_UPDATE

0

0

_strip,

// 153


le strip sur lequel appliquer le mode int8_t _width, // Nombre de leds allumées unsigned long _chaseColor, // la couleur qui se déplace unsigned long _backColor, // la couleur du fond int8_t _smoothness // controle du gradient des leds 100 = toutes � fond, 50 = progressif ) : Mode( _strip ) { // Mémoriser les paramètres width = _width; chaseColor = _chaseColor; backColor = _backColor; smoothness = _smoothness; #if DEBUG Serial << _PSTR(«ModeChase(«) << dec << strip.getId() << _PSTR(«) width=») << width << _PSTR(«, color=») << hex << chaseColor << «/» << backColor << _PSTR(«, smoothness=») << dec << smoothness << endl; #endif int led; if ( smoothness > 50 ) { for ( led = 0 ; led < width ; ++led ) { strip.setPixelColor( led, chaseColor ); #if DEBUG Serial << _PSTR(« led(«) << dec << led << _PSTR(«) : «) << hex << strip.getPixelColor( led ) << endl; #endif } for ( ; led < strip.numPixels() ; ++led ) { strip.setPixelColor( led, backColor ); } } else { int r, g, b; r = (int)((chaseColor >> 16) & 0x7F); g = (int)((chaseColor >> 8) & 0x7F); b = (int)((chaseColor ) & 0x7F);

int wd2 = (width-1)/2; for ( led = 0 ; led <= wd2 ; ++led ) { strip.setPixelColor( led, LedStrip::Color( ((led+1) * r)/(wd2+1), ((led+1) * g)/(wd2+1), ((led+1) * b)/(wd2+1) ) ); #if DEBUG Serial << _PSTR(« led<») << dec << led << _PSTR(«) : «) << hex << strip.getPixelColor( led ) << endl; #endif } for ( ; led < width ; ++ led ) { strip.setPixelColor( led, strip. getPixelColor( width-led-1 ) ); #if DEBUG Serial << _PSTR(« led(«) << dec << led << _PSTR(«> : «) << hex << strip.getPixelColor( led ) << endl; #endif } for ( ; led < strip.numPixels() ; ++led ) { strip.setPixelColor( led, backColor ); } } currentLed = -1; nextUpdate = (long)millis(); } ModeChase::~ModeChase() { } void ModeChase::run(boolean _bShow) { long now = (long)millis(); if ( (now - nextUpdate) >= 0 ) { #if DEBUG && TRACE_RUN Serial << «ModeChase::run(« << dec << strip. getId() << «) @ « << dec << now << endl; #endif update( _bShow ); nextUpdate += DefaultUpdatePeriod; 155


} } void ModeChase::update(boolean _bShow) { if ( currentLed >= 0 ) { #if DEBUG && TRACE_UPDATE //Serial << _PSTR(«ModeChase::update(«) << dec << strip.getId() << _PSTR(«) currentLed=») << currentLed << endl; #endif int toLed = currentLed + width; int fromLed = toLed-1; int n = width+1; int nbLeds = strip.numPixels(); for( ; n ; --n, --fromLed, --toLed ) { if ( fromLed < 0 ) fromLed += nbLeds; if ( toLed < 0 ) toLed += nbLeds; if ( fromLed >= nbLeds ) fromLed -= nbLeds; if ( toLed >= nbLeds ) toLed -= nbLeds; strip.setPixelColor( toLed, strip. getPixelColor( fromLed ) ); #if DEBUG && TRACE_UPDATE //Serial << _PSTR(«ModeChase::update(«) << dec << strip.getId() << _PSTR(«) from «) << fromLed << _PSTR(« to «) << toLed << _PSTR(« = «) << hex << strip. getPixelColor( fromLed ) << endl; #endif } } if ( ++currentLed >= strip.numPixels() ) { currentLed = 0; #if DEBUG && TRACE_UPDATE Serial << _PSTR(«ModeChase::update(«) << dec << strip.getId() << _PSTR(«) rebouclage @») << millis() << endl; #endif } if ( _bShow ) show(); }

#ifndef MODECHASE_H_ #define MODECHASE_H_ #include «Mode.h» class ModeChase : public Mode { public: // Constructeur du mode «Chase» ModeChase( LedStrip& _strip, // le strip sur lequel appliquer le mode int8_t _width = 10, // Nombre de leds allum�es unsigned long _chaseColor = LED_STRIP_ COLOR( 127, 100, 100), // la couleur qui se d�place unsigned long _backColor = LED_STRIP_ COLOR( 0, 0, 10), // la couleur du fond int8_t _smoothness = 0 // controle du gradient des leds 100 = toutes � fond, 50 = progressif ); virtual ~ModeChase(); virtual void run(boolean _bShow = false); virtual void update(boolean _bShow = false); protected: };

int8_t width; unsigned long chaseColor; unsigned long backColor; int8_t smoothness; long

nextUpdate;

int

currentLed;

#endif /* MODECHASE_H_ */ #include «ModeHeartBeat.h» #include «EZPrint.h» 157


#define TRACE_RUN #define TRACE_UPDATE

0

0

// Constructeur du mode «HeartBeat» ModeHeartBeat::ModeHeartBeat( LedStrip& _strip, // le strip sur lequel appliquer le mode uint16_t _periodeCycle // p�riode du battement en millisecondes (defaut 1.3sec = 46bpm) ) : Mode( _strip ) { periodeCycle = _periodeCycle; #if DEBUG Serial << _PSTR(«ModeHeartBeat(«) << dec << strip. getId() << _PSTR(«) periode=») << periodeCycle << endl; #endif }

debutCycle = (long)millis(); etatCycle = 0; update( true );

ModeHeartBeat::~ModeHeartBeat() { } // Cycle de battement cardiaque : // (0) 0..99 : eteint // (1) 100..299 : Allum� 50% // (2) 300..499 : eteint // (3) 500..699 : Allum� 30% // (4) 700..periode : Eteint void ModeHeartBeat::run(boolean _bShow) { long elapsed = (long)millis() - debutCycle; switch( etatCycle ) { case 0: if ( elapsed >= 100 ) { ++etatCycle; update( _bShow );

} break; case 1: if ( elapsed >= 300 ) { ++etatCycle; update( _bShow ); } break; case 2: if ( elapsed >= 500 ) { ++etatCycle; update( _bShow ); } break; case 3: if ( elapsed >= 700 ) { ++etatCycle; update( _bShow ); } break; case 4: if ( elapsed >= periodeCycle ) { #if DEBUG && TRACE_RUN Serial << _PSTR(«ModeHeartBeat::run(«) << dec << strip.getId() << _PSTR(«) rebouclage @») << millis() << endl; #endif etatCycle = 0; debutCycle += periodeCycle; update( _bShow ); } break; } } void ModeHeartBeat::update(boolean _bShow) { int led; int numLeds = strip.numPixels(); switch ( etatCycle ) { case 0: for ( led = 0 ; led < numLeds ; led++ ) 159


case case case case }

strip.setPixelColor( led, LedStrip::BLACK ); break; 1: for ( led = 0 ; led < numLeds ; led++ ) strip.setPixelColor( led, HEART1 ); break; 2: for ( led = 0 ; led < numLeds ; led++ ) strip.setPixelColor( led, LedStrip::BLACK ); break; 3: for ( led = 0 ; led < numLeds ; led++ ) strip.setPixelColor( led, HEART2 ); break; 4: for ( led = 0 ; led < numLeds ; led++ ) strip.setPixelColor( led, LedStrip::BLACK );

if ( _bShow ) show(); } #ifndef MODEHEARTBEAT_H_ #define MODEHEARTBEAT_H_ #include «Mode.h» #include «EZPrint.h» class ModeHeartBeat : public Mode { public: // Constructeur du mode «Chase» ModeHeartBeat( LedStrip& _strip, // le strip sur lequel appliquer le mode uint16_t _periodeCycle = 1300 // p�riode du battement en millisecondes (defaut 1.3sec = 46bpm) ); virtual ~ModeHeartBeat();

virtual void run(boolean _bShow = false);

virtual void update(boolean _bShow = false);

0, 0 ); static const uint32_t HEART2 = LED_STRIP_COLOR( 48, 0, 0 ); protected: };

long long uint8_t

periodeCycle; debutCycle; etatCycle;

#endif /* MODEHEARTBEAT_H_ */ #include «ModeNeon.h» #include «EZPrint.h» #define TRACE_RUN #define TRACE_UPDATE

0

0

// Constructeur du mode «Neon» ModeNeon::ModeNeon( LedStrip& _strip, // le strip sur lequel appliquer le mode uint8_t _maxBlink, // nombre de clignotements cons�cutifs max uint16_t _minInterval, // temps mini entre 2 rafales de clignotements uint16_t _maxInterval // temps maxi entre 2 rafales de clignotements ) : Mode( _strip ) { maxBlink = _maxBlink; minInterval = max( _minInterval, (2*maxBlink+1)*blinkDuration ); maxInterval = _maxInterval; #if DEBUG Serial << _PSTR(«ModeNeon(«) << dec << strip.getId() << _PSTR(«) maxBlink=») << maxBlink << _PSTR(«, minInterval=») << minInterval << _PSTR(«, maxInterval=») << maxInterval << endl; #endif

static const uint32_t HEART1 = LED_STRIP_COLOR( 64, 161


#ifndef MODENEON_H_ #define MODENEON_H_ #include «Mode.h» class ModeNeon : public Mode { public: // Constructeur du mode «Chase» ModeNeon( LedStrip& _strip, // le strip sur lequel appliquer le mode uint8_t _maxBlink = 4, // nombre de clignotements cons�cutifs max uint16_t _minInterval = 2000, // temps mini entre 2 rafales de clignotements uint16_t _maxInterval = 12000 // temps maxi entre 2 rafales de clignotements ); virtual ~ModeNeon();

virtual void run(boolean _bShow = false);

virtual void update(boolean _bShow = false); protected: static const long blinkDuration = 100; // dur�e du clignotement en ms

uint8_t uint16_t uint16_t

maxBlink; minInterval; maxInterval;

};

int8_t long long int8_t

blinkCount; interval; debutCycle; etatCycle;

#endif /* MODENEON_H_ */

163


Master Architecture et Cultures Sensibles de l’Environnement Mémoire du projet de fin d’étude, 2011-2012

Atmosphères Interactives une architecture des sens

Architecture Interactive (Nicolas Paolozzi) Immatérialité, vers une approche sensible de l’architecture (Damien Roche) Expériences Sensibles (PFE, partie commune) Aujourd’hui la technologie numérique est un domaine en plein développement. Cette technologie offre de nouveaux outils qui se sont démocratisés et sont devenus de plus en plus accessibles. Elle a naturellement été intégrée dans le monde urbain et a révolutionnée la manière d’être ensemble, la gouvernance et le management urbains. Elle conditionne de plus en plus l’accès aux services et ressources de la ville. Malgré cette profusion, on doit admettre que la montée en puissance des réseaux numériques et les flux de communication qu’ils induisent n’ont que très peu affecté, jusqu’ici, la forme physique de la ville. Ainsi, nous interrogeons la place des technologies dans la conception architecturale. Peuvent-elles générer de nouvelles formes et expériences de l’espace ? Comment transformeront-elles la pensée architecturale ? Notre approche des atmosphères interactives s’appuie sur deux notions. D’une part, la notion d’interactivité, induisant une pensée dynamique de l’espace. Cette pensée redéfinie alors la relation entre l’individu, l’architecture et l’environnement. D’autre part, nous étudierons des composantes immatérielles d’une atmosphère (climat et lumière) générant des espaces dé-matérialisés dont les limites ne sont plus physiques, mais ressenties. Par ces appuis théoriques, nous présenterons notre recherche et nos expérimentations sur la création d’atmosphères interactives grâce à deux projets. Le premier utilise le climat et ses caractéristiques afin de générer des espaces interactifs composés de flux dynamiques. Le second, quant à lui, reprend les intentions du projet climatique en s’attachant plus particulièrement au protocole d’expérimentation. Ce projet utilise la lumière pour générer des atmosphères, il s’inscrit dans le cadre du festival Hors Piste organisé par le Centre Pompidou, à Tokyo.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.